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
Nodesinstead. 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 classCoreMarkdownNodeRenderer.BulletListHolderprivate static classCoreMarkdownNodeRenderer.LineBreakVisitorVisits nodes to check if there are any soft or hard line breaks.private static classCoreMarkdownNodeRenderer.ListHolderprivate static classCoreMarkdownNodeRenderer.OrderedListHolder
-
Field Summary
Fields Modifier and Type Field Description protected MarkdownNodeRendererContextcontextprivate CharMatcherlinkDestinationEscapeInAngleBracketsprivate CharMatcherlinkDestinationNeedsAngleBracketsprivate CharMatcherlinkTitleEscapeInQuotesprivate CoreMarkdownNodeRenderer.ListHolderlistHolderIf we're currently within aBulletListorOrderedList, this keeps the context of that list.private java.util.regex.PatternorderedListMarkerPatternprivate AsciiMatchertextEscapeprivate CharMatchertextEscapeInHeadingprivate MarkdownWriterwriter
-
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 booleancontains(java.lang.String s, CharMatcher charMatcher)private static intfindMaxRunLength(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()voidrender(Node node)Render the specified node.private static java.lang.Stringrepeat(java.lang.String s, int count)voidvisit(BlockQuote blockQuote)voidvisit(BulletList bulletList)voidvisit(Code code)voidvisit(Document document)voidvisit(Emphasis emphasis)voidvisit(FencedCodeBlock codeBlock)voidvisit(HardLineBreak hardLineBreak)voidvisit(Heading heading)voidvisit(HtmlBlock htmlBlock)voidvisit(HtmlInline htmlInline)voidvisit(Image image)voidvisit(IndentedCodeBlock indentedCodeBlock)voidvisit(Link link)voidvisit(ListItem listItem)voidvisit(OrderedList orderedList)voidvisit(Paragraph paragraph)voidvisit(SoftLineBreak softLineBreak)voidvisit(StrongEmphasis strongEmphasis)voidvisit(Text text)voidvisit(ThematicBreak thematicBreak)protected voidvisitChildren(Node parent)Visit the child nodes.private voidwriteLinkLike(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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.commonmark.renderer.NodeRenderer
afterRoot, beforeRoot
-
-
-
-
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 aBulletListorOrderedList, 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:
getNodeTypesin interfaceNodeRenderer- Returns:
- the types of nodes that this renderer handles
-
render
public void render(Node node)
Description copied from interface:NodeRendererRender the specified node.- Specified by:
renderin interfaceNodeRenderer- Parameters:
node- the node to render, will be an instance of one ofNodeRenderer.getNodeTypes()
-
visit
public void visit(Document document)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(ThematicBreak thematicBreak)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Heading heading)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(IndentedCodeBlock indentedCodeBlock)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(FencedCodeBlock codeBlock)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(HtmlBlock htmlBlock)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Paragraph paragraph)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(BlockQuote blockQuote)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(BulletList bulletList)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(OrderedList orderedList)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(ListItem listItem)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Code code)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Emphasis emphasis)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(StrongEmphasis strongEmphasis)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Link link)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Image image)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(HtmlInline htmlInline)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(HardLineBreak hardLineBreak)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(SoftLineBreak softLineBreak)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visit
public void visit(Text text)
- Specified by:
visitin interfaceVisitor- Overrides:
visitin classAbstractVisitor
-
visitChildren
protected void visitChildren(Node parent)
Description copied from class:AbstractVisitorVisit the child nodes.- Overrides:
visitChildrenin 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)
-
-