From c3b6c1ce39682f392a197f63c7c2435762ec29be Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Thu, 11 May 2017 18:51:48 +0300 Subject: [PATCH] Struggling with empty lines --- .../renderer/SpannableMarkdownVisitor.java | 28 ++++++++++++++++--- .../markwon/renderer/SpannableRenderer.java | 1 + 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java b/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java index 0e7507da..26c09d24 100644 --- a/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java +++ b/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java @@ -38,8 +38,6 @@ import ru.noties.markwon.spans.ThematicBreakSpan; public class SpannableMarkdownVisitor extends AbstractVisitor { - // http://spec.commonmark.org/0.18/#html-blocks - private final SpannableConfiguration configuration; private final SpannableStringBuilder builder; @@ -79,7 +77,12 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { @Override public void visit(BlockQuote blockQuote) { + Debug.i(blockQuote); + newLine(); + if (blockQuoteIndent != 0) { + builder.append('\n'); + } final int length = builder.length(); @@ -95,6 +98,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { blockQuoteIndent -= 1; newLine(); + if (blockQuoteIndent == 0) { + builder.append('\n'); + } } @Override @@ -132,6 +138,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { )); newLine(); + builder.append('\n'); } @Override @@ -162,6 +169,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { newLine(); visitChildren(bulletList); newLine(); + if (listLevel == 0 && blockQuoteIndent == 0) { + builder.append('\n'); + } } @Override @@ -180,7 +190,6 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { listLevel - 1, length )); -// builder.setSpan(new BulletListItemSpan(blockQuoteIndent, listLevel > 1, length), length, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); blockQuoteIndent -= 1; listLevel -= 1; @@ -199,6 +208,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { setSpan(length, new ThematicBreakSpan(configuration.getThematicConfig())); newLine(); + builder.append('\n'); } @Override @@ -213,6 +223,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { super.visit(orderedList); newLine(); + if (listLevel == 0 && blockQuoteIndent == 0) { + builder.append('\n'); + } } @Override @@ -231,6 +244,9 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { ); newLine(); + + // after heading we add another line anyway (no additional checks) + builder.append('\n'); } @Override @@ -264,7 +280,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { final boolean inTightList = isInTightList(paragraph); - Debug.i(paragraph, inTightList); + Debug.i(paragraph, inTightList, listLevel); if (!inTightList) { newLine(); @@ -274,6 +290,10 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { if (!inTightList) { newLine(); + + if (blockQuoteIndent == 0) { + builder.append('\n'); + } } } diff --git a/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableRenderer.java b/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableRenderer.java index accb401f..69f78dcb 100644 --- a/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableRenderer.java +++ b/library-renderer/src/main/java/ru/noties/markwon/renderer/SpannableRenderer.java @@ -13,6 +13,7 @@ public class SpannableRenderer { // * LinkDrawableSpan, that draws link whilst image is still loading (it must be clickable...) // * Common interface for images (in markdown & inline-html) // * util method to properly copy markdown (with lists/links, etc) + // * util to apply empty line height public CharSequence render(@NonNull SpannableConfiguration configuration, @Nullable Node node) { final CharSequence out;