From 489ca21877ed1dc298016bd53289c72129442b47 Mon Sep 17 00:00:00 2001 From: Floens Date: Thu, 8 Feb 2018 23:42:25 +0100 Subject: [PATCH] commentparser: fix p not adding a newline adds a new block element rule, that is automatically applied to p. --- .../chan/core/site/parser/CommentParser.java | 6 +++--- .../chan/core/site/parser/StyleRule.java | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/parser/CommentParser.java b/Clover/app/src/main/java/org/floens/chan/core/site/parser/CommentParser.java index 435f9a06..f015857b 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/site/parser/CommentParser.java +++ b/Clover/app/src/main/java/org/floens/chan/core/site/parser/CommentParser.java @@ -56,6 +56,9 @@ public class CommentParser { private Map> rules = new HashMap<>(); public CommentParser() { + rule(tagRule("p")); + rule(tagRule("div")); + rule(tagRule("br").just("\n")); rule(tagRule("a").action(this::handleAnchor)); @@ -113,9 +116,6 @@ public class CommentParser { } switch (tag) { - case "p": - return appendBreakIfNotLastSibling( - handleParagraph(theme, post, text, element), element); default: // Unknown tag, return the text; return text; diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/parser/StyleRule.java b/Clover/app/src/main/java/org/floens/chan/core/site/parser/StyleRule.java index 57f38322..9acf06b0 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/site/parser/StyleRule.java +++ b/Clover/app/src/main/java/org/floens/chan/core/site/parser/StyleRule.java @@ -19,6 +19,7 @@ package org.floens.chan.core.site.parser; import android.graphics.Typeface; import android.text.SpannableString; +import android.text.TextUtils; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; @@ -31,6 +32,7 @@ import org.floens.chan.ui.theme.Theme; import org.jsoup.nodes.Element; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class StyleRule { @@ -39,6 +41,8 @@ public class StyleRule { QUOTE } + private final List blockElements = Arrays.asList("p", "div"); + public static StyleRule tagRule(String tag) { return new StyleRule().tag(tag); } @@ -61,9 +65,15 @@ public class StyleRule { private String justText = null; + private boolean blockElement = false; + public StyleRule tag(String tag) { this.tag = tag; + if (blockElements.contains(tag)) { + blockElement = true; + } + return this; } @@ -140,6 +150,12 @@ public class StyleRule { return this; } + public StyleRule blockElement(boolean blockElement) { + this.blockElement = blockElement; + + return this; + } + public boolean highPriority() { return classes != null && !classes.isEmpty(); } @@ -208,6 +224,11 @@ public class StyleRule { result = applySpan(result, spansToApply); } + // Apply break if not the last element. + if (blockElement && element.nextSibling() != null) { + result = TextUtils.concat(result, "\n"); + } + if (linkify) { CommentParserHelper.detectLinks(theme, post, result.toString(), new SpannableString(result)); }