diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f0746e6..36caf420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * `CoilImagesPlugin` image loader based on [Coil] library (new module: `markwon-image-coil`) ([#166], [#174])
Thanks to [@tylerbwong] * `MarkwonInlineParser` to customize inline parsing (new module: `markwon-inline-parser`) +* Update commonmark-java to `0.13.0` (and commonmark spec `0.29`) * `Markwon#configuration` method to expose `MarkwonConfiguration` via public API * `HeadingSpan#getLevel` getter * Add `SvgPictureMediaDecoder` in `image` module to deal with SVG without dimensions ([#165]) diff --git a/docs/docs/v4/inline-parser/README.md b/docs/docs/v4/inline-parser/README.md index 4c5471a1..e9638832 100644 --- a/docs/docs/v4/inline-parser/README.md +++ b/docs/docs/v4/inline-parser/README.md @@ -7,9 +7,9 @@ Usage of _internal_ classes: ```java import org.commonmark.internal.Bracket; import org.commonmark.internal.Delimiter; -import org.commonmark.internal.ReferenceParser; import org.commonmark.internal.util.Escaping; import org.commonmark.internal.util.Html5Entities; +import org.commonmark.internal.util.LinkScanner; import org.commonmark.internal.util.Parsing; import org.commonmark.internal.inline.AsteriskDelimiterProcessor; import org.commonmark.internal.inline.UnderscoreDelimiterProcessor; @@ -20,14 +20,12 @@ import org.commonmark.internal.inline.UnderscoreDelimiterProcessor; ```java // all default (like current commonmark-java InlineParserImpl) final InlineParserFactory factory = MarkwonInlineParser.factoryBuilder() - .includeDefaults() .build(); ``` ```java // disable images (current markdown images will be considered as links): final InlineParserFactory factory = MarkwonInlineParser.factoryBuilder() - .includeDefaults() .excludeInlineProcessor(BangInlineProcessor.class) .build(); ``` @@ -35,7 +33,6 @@ final InlineParserFactory factory = MarkwonInlineParser.factoryBuilder() ```java // disable core delimiter processors for `*`|`_` and `**`|`__` final InlineParserFactory factory = MarkwonInlineParser.factoryBuilder() - .includeDefaults() .excludeDelimiterProcessor(AsteriskDelimiterProcessor.class) .excludeDelimiterProcessor(UnderscoreDelimiterProcessor.class) .build(); @@ -43,7 +40,7 @@ final InlineParserFactory factory = MarkwonInlineParser.factoryBuilder() ```java // disable _all_ markdown inlines except for links (open and close bracket handling `[` & `]`) -final InlineParserFactory inlineParserFactory = MarkwonInlineParser.factoryBuilder() +final InlineParserFactory inlineParserFactory = MarkwonInlineParser.factoryBuilderNoDefaults() // note that there is no `includeDefaults` method call .referencesEnabled(true) .addInlineProcessor(new OpenBracketInlineProcessor()) diff --git a/markwon-core/src/test/java/io/noties/markwon/core/suite/OrderedListTest.java b/markwon-core/src/test/java/io/noties/markwon/core/suite/OrderedListTest.java index afd98aeb..e89b819f 100644 --- a/markwon-core/src/test/java/io/noties/markwon/core/suite/OrderedListTest.java +++ b/markwon-core/src/test/java/io/noties/markwon/core/suite/OrderedListTest.java @@ -50,6 +50,23 @@ public class OrderedListTest extends BaseSuiteTest { @Test public void two_spaces() { // just a regular flat-list (no sub-lists) + // UPD: cannot have more than 3 spaces (0.29), now it is: + // 1. First + // 2. Second 3. Third + +// final Document document = document( +// span(ORDERED_LIST, +// args("start", 1), +// text("First")), +// text("\n"), +// span(ORDERED_LIST, +// args("start", 2), +// text("Second")), +// text("\n"), +// span(ORDERED_LIST, +// args("start", 3), +// text("Third")) +// ); final Document document = document( span(ORDERED_LIST, @@ -58,11 +75,7 @@ public class OrderedListTest extends BaseSuiteTest { text("\n"), span(ORDERED_LIST, args("start", 2), - text("Second")), - text("\n"), - span(ORDERED_LIST, - args("start", 3), - text("Third")) + text("Second 3. Third")) ); matchInput("ol-2-spaces.md", document); diff --git a/markwon-editor/src/test/java/io/noties/markwon/editor/MarkwonEditorTextWatcherTest.java b/markwon-editor/src/test/java/io/noties/markwon/editor/MarkwonEditorTextWatcherTest.java index 0befcadc..5066c6d9 100644 --- a/markwon-editor/src/test/java/io/noties/markwon/editor/MarkwonEditorTextWatcherTest.java +++ b/markwon-editor/src/test/java/io/noties/markwon/editor/MarkwonEditorTextWatcherTest.java @@ -19,6 +19,7 @@ import io.noties.markwon.editor.MarkwonEditor.PreRenderResultListener; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.RETURNS_MOCKS; import static org.mockito.Mockito.doAnswer; @@ -52,6 +53,8 @@ public class MarkwonEditorTextWatcherTest { final ExecutorService service = mock(ExecutorService.class); final EditText editText = mock(EditText.class); + when(editable.getSpans(anyInt(), anyInt(), any(Class.class))).thenReturn(new Object[0]); + when(editText.getText()).thenReturn(editable); when(service.submit(any(Runnable.class))).thenAnswer(new Answer() { @@ -81,7 +84,7 @@ public class MarkwonEditorTextWatcherTest { ArgumentCaptor.forClass(PreRenderResultListener.class); verify(service, times(1)).submit(any(Runnable.class)); - verify(editor, times(1)).preRender(eq(editable), captor.capture()); + verify(editor, times(1)).preRender(any(Editable.class), captor.capture()); final PreRenderResultListener listener = captor.getValue(); final PreRenderResult result = mock(PreRenderResult.class); @@ -125,7 +128,7 @@ public class MarkwonEditorTextWatcherTest { final MarkwonEditorTextWatcher textWatcher = MarkwonEditorTextWatcher.withPreRender(editor, service, editText); - textWatcher.afterTextChanged(mock(Editable.class)); + textWatcher.afterTextChanged(mock(Editable.class, RETURNS_MOCKS)); verify(editText, times(1)).post(captor.capture());