Core plugin 3.0.0

WARNING

This is documentation for legacy versions. For the most current version click here.

Since 3.0.0 with introduction of plugins, Markwon core functionality was moved to a dedicated plugin.

CorePlugin.create();

Node visitors

CorePlugin registers these commonmark-java node visitors:

  • Text
  • StrongEmphasis
  • Emphasis
  • BlockQuote
  • Code
  • FencedCodeBlock
  • IndentedCodeBlock
  • BulletList
  • OrderedList
  • ListItem
  • ThematicBreak
  • Heading
  • SoftLineBreak
  • HardLineBreak
  • Paragraph
  • Link

Span factories

CorePlugin adds these SpanFactorys:

  • StrongEmphasis
  • Emphasis
  • BlockQuote
  • Code
  • FencedCodeBlock
  • IndentedCodeBlock
  • ListItem
  • Heading
  • Link
  • ThematicBreak

TIP

By default CorePlugin does not register a Paragraph SpanFactory but this can be done in your custom plugin:

Markwon.builder(context)
        .usePlugin(new AbstractMarkwonPlugin() {
            @Override
            public void configureSpansFactory(@NonNull MarkwonSpansFactory.Builder builder) {
                builder.setFactory(Paragraph.class, (configuration, props) -> 
                        new ForegroundColorSpan(Color.RED));
            }
        })

Props

These props are exported by CorePlugin and can be found in CoreProps:

  • Prop<ListItemType> LIST_ITEM_TYPE (BULLET | ORDERED)
  • Prop<Integer> BULLET_LIST_ITEM_LEVEL
  • Prop<Integer> ORDERED_LIST_ITEM_NUMBER
  • Prop<Integer> HEADING_LEVEL
  • Prop<String> LINK_DESTINATION
  • Prop<Boolean> PARAGRAPH_IS_IN_TIGHT_LIST

List item type

Before 3.0.0 Markwon had 2 distinct lists (bullet and ordered). Since 3.0.0 a single SpanFactory is used, which internally checks for Prop<ListItemType> LIST_ITEM_TYPE. Beware of this if you would like to override only one of the list types. This is done to correspond to commonmark-java implementation.

More information about props can be found here


Soft line break

Since 3.0.0 Markwon core does not give an option to insert a new line when there is a soft line break in markdown. Instead a custom plugin can be used:

final Markwon markwon = Markwon.builder(this)
        .usePlugin(new AbstractMarkwonPlugin() {
            @Override
            public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) {
                builder.on(SoftLineBreak.class, (visitor, softLineBreak) ->
                        visitor.forceNewLine());
            }
        })
        .build();

WARNING

Please note that CorePlugin will implicitly set a LinkMovementMethod on a TextView if one is not present. If you wish to customize a MovementMethod that is used, apply one manually to a TextView (before applying markdown) or use the MovementMethodPlugin which accepts a MovementMethod as an argument.

Last Updated: 8/6/2019, 7:27:20 PM