aboutsummaryrefslogtreecommitdiffstats
path: root/src/Utilities
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-11-16 17:49:33 +0100
committerivarlovlie <git@ivarlovlie.no>2022-11-16 17:49:33 +0100
commit9ba3cf736fa0c83e6a9850b31d43521cabe8a016 (patch)
tree4ef813d910edf2cafc86687b5993468c524674a9 /src/Utilities
parent49cb5a82e7a31f65d0c86ca24dd5f4eb825e6803 (diff)
downloadlettnytt-9ba3cf736fa0c83e6a9850b31d43521cabe8a016.tar.xz
lettnytt-9ba3cf736fa0c83e6a9850b31d43521cabe8a016.zip
feat: Support free text excluding
Diffstat (limited to 'src/Utilities')
-rw-r--r--src/Utilities/HtmlSanitiser.cs29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/Utilities/HtmlSanitiser.cs b/src/Utilities/HtmlSanitiser.cs
index 645b09d..9fbc003 100644
--- a/src/Utilities/HtmlSanitiser.cs
+++ b/src/Utilities/HtmlSanitiser.cs
@@ -25,7 +25,6 @@ public static class HtmlSanitiser
Sanitize(element.ChildNodes[i], excludeSelectors);
}
-
return element.InnerHtml;
}
@@ -37,30 +36,26 @@ public static class HtmlSanitiser
return element;
}
- private static void Sanitize(INode node, string excludeSelectors = default) {
+ private static void Sanitize(INode node, string excludeSelectors = default, string excludeText = default) {
if (node is IElement htmlElement) {
if (excludeSelectors.HasValue()) {
foreach (var selector in excludeSelectors.Split(',')) {
- if (selector.StartsWith(".")) {
- if (htmlElement.ClassList.Contains(selector.Replace(".", ""))) {
- Console.WriteLine("Removed: " + htmlElement.TagName + ", because of: " + selector);
- htmlElement.Remove();
- continue;
- }
+ if (
+ selector.StartsWith(".") && htmlElement.ClassList.Contains(selector.Replace(".", ""))
+ || selector.StartsWith("#") && htmlElement.Id == selector.Replace("#", "")
+ || htmlElement.TagName == selector.ToUpper()
+ || selector.StartsWith("text:") && htmlElement.TextContent.Contains(selector.Replace("text:", ""))
+ ) {
+ Console.WriteLine("Removed: " + htmlElement.TagName + ", because of: " + selector);
+ htmlElement.Remove();
}
- if (selector.StartsWith("#")) {
- if (htmlElement.Id == selector.Replace("#", "")) {
- Console.WriteLine("Removed: " + htmlElement.TagName + ", because of: " + selector);
+ if (!selector.StartsWith("text:")) {
+ foreach (var element in htmlElement.QuerySelectorAll(selector)) {
+ Console.WriteLine("Removed: " + element.TagName + ", because of: " + selector);
htmlElement.Remove();
- continue;
}
}
-
- if (htmlElement.TagName == selector.ToUpper()) {
- Console.WriteLine("Removed: " + htmlElement.TagName + ", because of: " + selector);
- htmlElement.Remove();
- }
}
}