From a812f52e8002c6957dcedaad1158032f06c4093b Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 2 Feb 2020 13:03:06 +0100 Subject: [PATCH] Experiment: remove conditional HTML --- .../java/eu/faircode/email/HtmlHelper.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 14927612f1..9a44ceee56 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -43,12 +43,14 @@ import androidx.core.util.PatternsCompat; import androidx.preference.PreferenceManager; import org.jsoup.nodes.Attribute; +import org.jsoup.nodes.Comment; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.jsoup.nodes.TextNode; import org.jsoup.safety.Cleaner; import org.jsoup.safety.Whitelist; +import org.jsoup.select.NodeFilter; import org.jsoup.select.NodeTraversor; import org.jsoup.select.NodeVisitor; @@ -257,6 +259,32 @@ public class HtmlHelper { Document parsed = JsoupEx.parse(html); + // ... + if (!display_hidden && BuildConfig.DEBUG) + parsed.filter(new NodeFilter() { + private boolean remove = false; + + @Override + public FilterResult head(Node node, int depth) { + if (node instanceof Comment) { + String data = ((Comment) node).getData().trim(); + if (data.startsWith("[if") && !data.endsWith("endif]")) { + remove = true; + return FilterResult.REMOVE; + } else if (remove && data.endsWith("endif]")) { + remove = false; + return FilterResult.REMOVE; + } + } + return (remove ? FilterResult.REMOVE : FilterResult.CONTINUE); + } + + @Override + public FilterResult tail(Node node, int depth) { + return FilterResult.CONTINUE; + } + }); + //