Class Parser.Builder
- java.lang.Object
-
- org.commonmark.parser.Parser.Builder
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<BlockParserFactory>
blockParserFactories
private java.util.List<DelimiterProcessor>
delimiterProcessors
private java.util.Set<java.lang.Class<? extends Block>>
enabledBlockTypes
private IncludeSourceSpans
includeSourceSpans
private java.util.List<InlineContentParserFactory>
inlineContentParserFactories
private InlineParserFactory
inlineParserFactory
private java.util.Set<java.lang.Character>
linkMarkers
private java.util.List<LinkProcessor>
linkProcessors
private java.util.List<PostProcessor>
postProcessors
-
Constructor Summary
Constructors Constructor Description Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Parser
build()
Parser.Builder
customBlockParserFactory(BlockParserFactory blockParserFactory)
Add a custom block parser factory.Parser.Builder
customDelimiterProcessor(DelimiterProcessor delimiterProcessor)
Add a custom delimiter processor for inline parsing.Parser.Builder
customInlineContentParserFactory(InlineContentParserFactory inlineContentParserFactory)
Add a factory for a custom inline content parser, for extending inline parsing or overriding built-in parsing.Parser.Builder
enabledBlockTypes(java.util.Set<java.lang.Class<? extends Block>> enabledBlockTypes)
Describe the list of markdown features the parser will recognize and parse.Parser.Builder
extensions(java.lang.Iterable<? extends Extension> extensions)
private InlineParserFactory
getInlineParserFactory()
Parser.Builder
includeSourceSpans(IncludeSourceSpans includeSourceSpans)
Whether to calculate source positions for parsedNodes
, seeNode.getSourceSpans()
.Parser.Builder
inlineParserFactory(InlineParserFactory inlineParserFactory)
Overrides the parser used for inline markdown processing.Parser.Builder
linkMarker(java.lang.Character linkMarker)
Add a custom link marker for link processing.Parser.Builder
linkProcessor(LinkProcessor linkProcessor)
Add a custom link/image processor for inline parsing.Parser.Builder
postProcessor(PostProcessor postProcessor)
-
-
-
Field Detail
-
blockParserFactories
private final java.util.List<BlockParserFactory> blockParserFactories
-
inlineContentParserFactories
private final java.util.List<InlineContentParserFactory> inlineContentParserFactories
-
delimiterProcessors
private final java.util.List<DelimiterProcessor> delimiterProcessors
-
linkProcessors
private final java.util.List<LinkProcessor> linkProcessors
-
postProcessors
private final java.util.List<PostProcessor> postProcessors
-
linkMarkers
private final java.util.Set<java.lang.Character> linkMarkers
-
enabledBlockTypes
private java.util.Set<java.lang.Class<? extends Block>> enabledBlockTypes
-
inlineParserFactory
private InlineParserFactory inlineParserFactory
-
includeSourceSpans
private IncludeSourceSpans includeSourceSpans
-
-
Method Detail
-
extensions
public Parser.Builder extensions(java.lang.Iterable<? extends Extension> extensions)
- Parameters:
extensions
- extensions to use on this parser- Returns:
this
-
enabledBlockTypes
public Parser.Builder enabledBlockTypes(java.util.Set<java.lang.Class<? extends Block>> enabledBlockTypes)
Describe the list of markdown features the parser will recognize and parse.By default, CommonMark will recognize and parse the following set of "block" elements:
Heading
(#
)HtmlBlock
(<html></html>
)ThematicBreak
(Horizontal Rule) (---
)FencedCodeBlock
(```
)IndentedCodeBlock
BlockQuote
(>
)ListBlock
(Ordered / Unordered List) (1. / *
)
To parse only a subset of the features listed above, pass a list of each feature's associated
Block
class.E.g., to only parse headings and lists:
Parser.builder().enabledBlockTypes(Set.of(Heading.class, ListBlock.class));
- Parameters:
enabledBlockTypes
- A list of block nodes the parser will parse. If this list is empty, the parser will not recognize any CommonMark core features.- Returns:
this
-
includeSourceSpans
public Parser.Builder includeSourceSpans(IncludeSourceSpans includeSourceSpans)
Whether to calculate source positions for parsedNodes
, seeNode.getSourceSpans()
.By default, source spans are disabled.
- Parameters:
includeSourceSpans
- which kind of source spans should be included- Returns:
this
- Since:
- 0.16.0
-
customBlockParserFactory
public Parser.Builder customBlockParserFactory(BlockParserFactory blockParserFactory)
Add a custom block parser factory.Note that custom factories are applied before the built-in factories. This is so that extensions can change how some syntax is parsed that would otherwise be handled by built-in factories. "With great power comes great responsibility."
- Parameters:
blockParserFactory
- a block parser factory implementation- Returns:
this
-
customInlineContentParserFactory
public Parser.Builder customInlineContentParserFactory(InlineContentParserFactory inlineContentParserFactory)
Add a factory for a custom inline content parser, for extending inline parsing or overriding built-in parsing.Note that parsers are triggered based on a special character as specified by
InlineContentParserFactory.getTriggerCharacters()
. It is possible to register multiple parsers for the same character, or even for some built-in special character such as`
. The custom parsers are tried first in order in which they are registered, and then the built-in ones.
-
customDelimiterProcessor
public Parser.Builder customDelimiterProcessor(DelimiterProcessor delimiterProcessor)
Add a custom delimiter processor for inline parsing.Note that multiple delimiter processors with the same characters can be added, as long as they have a different minimum length. In that case, the processor with the shortest matching length is used. Adding more than one delimiter processor with the same character and minimum length is invalid.
If you want more control over how parsing is done, you might want to use
customInlineContentParserFactory(org.commonmark.parser.beta.InlineContentParserFactory)
instead.- Parameters:
delimiterProcessor
- a delimiter processor implementation- Returns:
this
-
linkProcessor
public Parser.Builder linkProcessor(LinkProcessor linkProcessor)
Add a custom link/image processor for inline parsing.Multiple link processors can be added, and will be tried in order in which they were added. If no link processor applies, the normal behavior applies. That means these can override built-in link parsing.
- Parameters:
linkProcessor
- a link processor implementation- Returns:
this
-
linkMarker
public Parser.Builder linkMarker(java.lang.Character linkMarker)
Add a custom link marker for link processing. A link marker is a character like!
which, if it appears before the[
of a link, changes the meaning of the link.If a link marker followed by a valid link is parsed, the
LinkInfo
that is passed toLinkProcessor
will have itsLinkInfo.marker()
set. A link processor should check theText.getLiteral()
and then do any processing, and will probably want to useLinkResult.includeMarker()
.- Parameters:
linkMarker
- a link marker character- Returns:
this
-
postProcessor
public Parser.Builder postProcessor(PostProcessor postProcessor)
-
inlineParserFactory
public Parser.Builder inlineParserFactory(InlineParserFactory inlineParserFactory)
Overrides the parser used for inline markdown processing.Provide an implementation of InlineParserFactory which provides a custom inline parser to modify how the following are parsed: bold (**) italic (*) strikethrough (~~) backtick quote (`) link ([title](http://)) image ()
Note that if this method is not called or the inline parser factory is set to null, then the default implementation will be used.
- Parameters:
inlineParserFactory
- an inline parser factory implementation- Returns:
this
-
getInlineParserFactory
private InlineParserFactory getInlineParserFactory()
-
-