Package org.commonmark.renderer.markdown
Class CoreMarkdownNodeRenderer
- java.lang.Object
-
- org.commonmark.node.AbstractVisitor
-
- org.commonmark.renderer.markdown.CoreMarkdownNodeRenderer
-
- All Implemented Interfaces:
Visitor
,NodeRenderer
public class CoreMarkdownNodeRenderer extends AbstractVisitor implements NodeRenderer
The node renderer that renders all the core nodes (comes last in the order of node renderers).Note that while sometimes it would be easier to record what kind of syntax was used on parsing (e.g. ATX vs Setext heading), this renderer is intended to also work for documents that were created by directly creating
Nodes
instead. So in order to support that, it sometimes needs to do a bit more work.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
CoreMarkdownNodeRenderer.BulletListHolder
private static class
CoreMarkdownNodeRenderer.LineBreakVisitor
Visits nodes to check if there are any soft or hard line breaks.private static class
CoreMarkdownNodeRenderer.ListHolder
private static class
CoreMarkdownNodeRenderer.OrderedListHolder
-
Field Summary
Fields Modifier and Type Field Description protected MarkdownNodeRendererContext
context
private CharMatcher
linkDestinationEscapeInAngleBrackets
private CharMatcher
linkDestinationNeedsAngleBrackets
private CharMatcher
linkTitleEscapeInQuotes
private CoreMarkdownNodeRenderer.ListHolder
listHolder
If we're currently within aBulletList
orOrderedList
, this keeps the context of that list.private java.util.regex.Pattern
orderedListMarkerPattern
private AsciiMatcher
textEscape
private CharMatcher
textEscapeInHeading
private MarkdownWriter
writer
-
Constructor Summary
Constructors Constructor Description CoreMarkdownNodeRenderer(MarkdownNodeRendererContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static boolean
contains(java.lang.String s, CharMatcher charMatcher)
private static int
findMaxRunLength(java.lang.String needle, java.lang.String s)
private static java.util.List<java.lang.String>
getLines(java.lang.String literal)
java.util.Set<java.lang.Class<? extends Node>>
getNodeTypes()
void
render(Node node)
Render the specified node.private static java.lang.String
repeat(java.lang.String s, int count)
void
visit(BlockQuote blockQuote)
void
visit(BulletList bulletList)
void
visit(Code code)
void
visit(Document document)
void
visit(Emphasis emphasis)
void
visit(FencedCodeBlock codeBlock)
void
visit(HardLineBreak hardLineBreak)
void
visit(Heading heading)
void
visit(HtmlBlock htmlBlock)
void
visit(HtmlInline htmlInline)
void
visit(Image image)
void
visit(IndentedCodeBlock indentedCodeBlock)
void
visit(Link link)
void
visit(ListItem listItem)
void
visit(OrderedList orderedList)
void
visit(Paragraph paragraph)
void
visit(SoftLineBreak softLineBreak)
void
visit(StrongEmphasis strongEmphasis)
void
visit(Text text)
void
visit(ThematicBreak thematicBreak)
protected void
visitChildren(Node parent)
Visit the child nodes.private void
writeLinkLike(java.lang.String title, java.lang.String destination, Node node, java.lang.String opener)
-
Methods inherited from class org.commonmark.node.AbstractVisitor
visit, visit, visit
-
-
-
-
Field Detail
-
textEscape
private final AsciiMatcher textEscape
-
textEscapeInHeading
private final CharMatcher textEscapeInHeading
-
linkDestinationNeedsAngleBrackets
private final CharMatcher linkDestinationNeedsAngleBrackets
-
linkDestinationEscapeInAngleBrackets
private final CharMatcher linkDestinationEscapeInAngleBrackets
-
linkTitleEscapeInQuotes
private final CharMatcher linkTitleEscapeInQuotes
-
orderedListMarkerPattern
private final java.util.regex.Pattern orderedListMarkerPattern
-
context
protected final MarkdownNodeRendererContext context
-
writer
private final MarkdownWriter writer
-
listHolder
private CoreMarkdownNodeRenderer.ListHolder listHolder
If we're currently within aBulletList
orOrderedList
, this keeps the context of that list. It has a parent field so that it can represent a stack (for nested lists).
-
-
Constructor Detail
-
CoreMarkdownNodeRenderer
public CoreMarkdownNodeRenderer(MarkdownNodeRendererContext context)
-
-
Method Detail
-
getNodeTypes
public java.util.Set<java.lang.Class<? extends Node>> getNodeTypes()
- Specified by:
getNodeTypes
in interfaceNodeRenderer
- Returns:
- the types of nodes that this renderer handles
-
render
public void render(Node node)
Description copied from interface:NodeRenderer
Render the specified node.- Specified by:
render
in interfaceNodeRenderer
- Parameters:
node
- the node to render, will be an instance of one ofNodeRenderer.getNodeTypes()
-
visit
public void visit(Document document)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(ThematicBreak thematicBreak)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Heading heading)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(IndentedCodeBlock indentedCodeBlock)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(FencedCodeBlock codeBlock)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(HtmlBlock htmlBlock)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Paragraph paragraph)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(BlockQuote blockQuote)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(BulletList bulletList)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(OrderedList orderedList)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(ListItem listItem)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Code code)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Emphasis emphasis)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(StrongEmphasis strongEmphasis)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Link link)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Image image)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(HtmlInline htmlInline)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(HardLineBreak hardLineBreak)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(SoftLineBreak softLineBreak)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visit
public void visit(Text text)
- Specified by:
visit
in interfaceVisitor
- Overrides:
visit
in classAbstractVisitor
-
visitChildren
protected void visitChildren(Node parent)
Description copied from class:AbstractVisitor
Visit the child nodes.- Overrides:
visitChildren
in classAbstractVisitor
- Parameters:
parent
- the parent node whose children should be visited
-
findMaxRunLength
private static int findMaxRunLength(java.lang.String needle, java.lang.String s)
-
contains
private static boolean contains(java.lang.String s, CharMatcher charMatcher)
-
repeat
private static java.lang.String repeat(java.lang.String s, int count)
-
getLines
private static java.util.List<java.lang.String> getLines(java.lang.String literal)
-
writeLinkLike
private void writeLinkLike(java.lang.String title, java.lang.String destination, Node node, java.lang.String opener)
-
-