From 9765deb787b242370c21833b1d732eabda86467e Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Mon, 6 Aug 2018 16:22:22 +0300 Subject: [PATCH] Add softBreakAddsNewLine option for SpannableConfiguration --- .../markwon/SpannableConfiguration.java | 27 ++++++++++++++++++- .../renderer/SpannableMarkdownVisitor.java | 8 ++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java b/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java index dda590f5..013f9989 100644 --- a/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java +++ b/library/src/main/java/ru/noties/markwon/SpannableConfiguration.java @@ -32,6 +32,7 @@ public class SpannableConfiguration { private final SpannableHtmlParser htmlParser; private final ImageSizeResolver imageSizeResolver; private final SpannableFactory factory; // @since 1.1.0 + private final boolean softBreakAddsNewLine; // @since 1.1.1 private SpannableConfiguration(@NonNull Builder builder) { this.theme = builder.theme; @@ -42,6 +43,7 @@ public class SpannableConfiguration { this.htmlParser = builder.htmlParser; this.imageSizeResolver = builder.imageSizeResolver; this.factory = builder.factory; + this.softBreakAddsNewLine = builder.softBreakAddsNewLine; } @NonNull @@ -84,6 +86,15 @@ public class SpannableConfiguration { return factory; } + /** + * @return a flag indicating if soft break should be treated as a hard + * break and thus adding a new line instead of adding a white space + * @since 1.1.1 + */ + public boolean softBreakAddsNewLine() { + return softBreakAddsNewLine; + } + @SuppressWarnings("unused") public static class Builder { @@ -95,7 +106,8 @@ public class SpannableConfiguration { private UrlProcessor urlProcessor; private SpannableHtmlParser htmlParser; private ImageSizeResolver imageSizeResolver; - private SpannableFactory factory; + private SpannableFactory factory; // @since 1.1.0 + private boolean softBreakAddsNewLine; // @since 1.1.1 Builder(@NonNull Context context) { this.context = context; @@ -155,6 +167,19 @@ public class SpannableConfiguration { return this; } + /** + * @param softBreakAddsNewLine a flag indicating if soft break should be treated as a hard + * break and thus adding a new line instead of adding a white space + * @return self + * @see spec + * @since 1.1.1 + */ + @NonNull + public Builder softBreakAddsNewLine(boolean softBreakAddsNewLine) { + this.softBreakAddsNewLine = softBreakAddsNewLine; + return this; + } + @NonNull public SpannableConfiguration build() { diff --git a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java index 82745e50..b984ab71 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java +++ b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java @@ -256,8 +256,12 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { @Override public void visit(SoftLineBreak softLineBreak) { - // at first here was a new line, but here should be a space char - builder.append(' '); + // @since 1.1.1 there is an option to treat soft break as a hard break (thus adding new line) + if (configuration.softBreakAddsNewLine()) { + newLine(); + } else { + builder.append(' '); + } } @Override