-
Notifications
You must be signed in to change notification settings - Fork 320
Description
Using version 0.20.0 of commonmark-java with strikethrough extension leads to this exception at runtime:
Caused by: java.lang.IllegalArgumentException: Cannot add two delimiter processors for char '~' and minimum length 1
at org.commonmark.internal.StaggeredDelimiterProcessor.add(StaggeredDelimiterProcessor.java:54) ~[commonmark-0.20.0.jar:na]
at org.commonmark.internal.InlineParserImpl.addDelimiterProcessors(InlineParserImpl.java:92) ~[commonmark-0.20.0.jar:na]
at org.commonmark.internal.InlineParserImpl.calculateDelimiterProcessors(InlineParserImpl.java:69) ~[commonmark-0.20.0.jar:na]
at org.commonmark.internal.InlineParserImpl.(InlineParserImpl.java:39) ~[commonmark-0.20.0.jar:na]
at org.commonmark.parser.Parser$Builder$1.create(Parser.java:272) ~[commonmark-0.20.0.jar:na]
at org.commonmark.parser.Parser.(Parser.java:45) ~[commonmark-0.20.0.jar:na]
at org.commonmark.parser.Parser.(Parser.java:28) ~[commonmark-0.20.0.jar:na]
at org.commonmark.parser.Parser$Builder.build(Parser.java:128) ~[commonmark-0.20.0.jar:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.23.jar:5.3.23]
... 47 common frames omitted
Gradle dependencies used are:
implementation 'org.commonmark:commonmark:0.20.0'
implementation 'org.commonmark:commonmark-ext-autolink:0.20.0'
implementation 'org.commonmark:commonmark-ext-gfm-tables:0.20.0'
implementation 'org.commonmark:commonmark-ext-gfm-strikethrough:0.20.0'
implementation 'org.commonmark:commonmark-ext-heading-anchor:0.20.0'
implementation 'org.commonmark:commonmark-ext-image-attributes:0.20.0'
The renderer is initialized as follows:
final List<Extension> extensions =
Arrays.asList(
AutolinkExtension.create(),
HeadingAnchorExtension.create(),
ImageAttributesExtension.create(),
UnderlineExtension.create(),
StrikethroughExtension.create(),
SubscriptExtension.create(),
SupscriptExtension.create(),
TablesExtension.create());
this.markdownParser =
Parser.builder().extensions(extensions).build();
this.markdownHtmlRenderer =
HtmlRenderer.builder()
.escapeHtml(true)
.extensions(extensions)
.nodeRendererFactory(VideoEmbedNodeRenderer::new)
.sanitizeUrls(true)
.build();
this.markdownPlaintextRenderer = TextContentRenderer.builder().extensions(extensions).stripNewlines(true).build();Removing StrikethroughExtension.create() from the list of extensions or downgrading to version 0.19.0 fixes the issue.