Add SoftBreakAddsNewLinePlugin plugin in core module

This commit is contained in:
Dimitry Ivanov 2020-02-26 17:35:58 +03:00
parent cc35c35581
commit 9532d32e8d
3 changed files with 55 additions and 2 deletions

View File

@ -13,6 +13,8 @@
``` ```
* `JLatexMathPlugin`: add `theme` (to customize both inlines and blocks) * `JLatexMathPlugin`: add `theme` (to customize both inlines and blocks)
* `JLatexMathPlugin`: add `renderMode` to use previous (pre `4.3.0`) LaTeX rendering * `JLatexMathPlugin`: add `renderMode` to use previous (pre `4.3.0`) LaTeX rendering
* add `SoftBreakAddsNewLinePlugin` plugin (`core` module)
# 4.2.2 # 4.2.2
* Fixed `AsyncDrawable` display when it has placeholder with empty bounds ([#189]) * Fixed `AsyncDrawable` display when it has placeholder with empty bounds ([#189])

View File

@ -0,0 +1,26 @@
package io.noties.markwon;
import androidx.annotation.NonNull;
import org.commonmark.node.SoftLineBreak;
/**
* @since 4.3.0-SNAPSHOT
*/
public class SoftBreakAddsNewLinePlugin extends AbstractMarkwonPlugin {
@NonNull
public static SoftBreakAddsNewLinePlugin create() {
return new SoftBreakAddsNewLinePlugin();
}
@Override
public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) {
builder.on(SoftLineBreak.class, new MarkwonVisitor.NodeVisitor<SoftLineBreak>() {
@Override
public void visit(@NonNull MarkwonVisitor visitor, @NonNull SoftLineBreak softLineBreak) {
visitor.forceNewLine();
}
});
}
}

View File

@ -21,6 +21,7 @@ import io.noties.markwon.Markwon;
import io.noties.markwon.MarkwonConfiguration; import io.noties.markwon.MarkwonConfiguration;
import io.noties.markwon.MarkwonSpansFactory; import io.noties.markwon.MarkwonSpansFactory;
import io.noties.markwon.MarkwonVisitor; import io.noties.markwon.MarkwonVisitor;
import io.noties.markwon.SoftBreakAddsNewLinePlugin;
import io.noties.markwon.core.MarkwonTheme; import io.noties.markwon.core.MarkwonTheme;
import io.noties.markwon.image.ImageItem; import io.noties.markwon.image.ImageItem;
import io.noties.markwon.image.ImagesPlugin; import io.noties.markwon.image.ImagesPlugin;
@ -35,15 +36,17 @@ public class BasicPluginsActivity extends ActivityWithMenuOptions {
private TextView textView; private TextView textView;
@NonNull @NonNull
@Override @Override
public MenuOptions menuOptions() { public MenuOptions menuOptions() {
return MenuOptions.create() return MenuOptions.create()
.add("paragraphSpan", this::paragraphSpan) .add("paragraphSpan", this::paragraphSpan)
.add("disableNode", this::disableNode) .add("disableNode", this::disableNode)
.add("customizeTheme", this::customizeTheme)
.add("linkWithMovementMethod", this::linkWithMovementMethod) .add("linkWithMovementMethod", this::linkWithMovementMethod)
.add("imagesPlugin", this::imagesPlugin); .add("imagesPlugin", this::imagesPlugin)
.add("softBreakAddsSpace", this::softBreakAddsSpace)
.add("softBreakAddsNewLine", this::softBreakAddsNewLine);
} }
@Override @Override
@ -217,6 +220,28 @@ public class BasicPluginsActivity extends ActivityWithMenuOptions {
markwon.setMarkdown(textView, markdown); markwon.setMarkdown(textView, markdown);
} }
private void softBreakAddsSpace() {
// default behavior
final String md = "" +
"Hello there ->(line)\n(break)<- going on and on";
Markwon.create(this).setMarkdown(textView, md);
}
private void softBreakAddsNewLine() {
// insert a new line when markdown has a soft break
final Markwon markwon = Markwon.builder(this)
.usePlugin(SoftBreakAddsNewLinePlugin.create())
.build();
final String md = "" +
"Hello there ->(line)\n(break)<- going on and on";
markwon.setMarkdown(textView, md);
}
// public void step_6() { // public void step_6() {
// //
// final Markwon markwon = Markwon.builder(this) // final Markwon markwon = Markwon.builder(this)