@@ -45,19 +45,21 @@ object DocFlexmarkParser {
45
45
}
46
46
}
47
47
48
- case class DocFlexmarkRenderer (renderLink : (DocLink , String ) => String , snippetCheckingFunc : (String ) => Unit )
48
+ case class DocFlexmarkRenderer (renderLink : (DocLink , String ) => String , snippetCheckingFunc : (String , Option [snippets. SnippetCompilerArg ] ) => Unit )
49
49
extends HtmlRenderer .HtmlRendererExtension :
50
50
51
51
def rendererOptions (opt : MutableDataHolder ): Unit = () // noop
52
52
53
- object CodeHandler extends CustomNodeRenderer [ast.Code ]:
54
- override def render (node : ast.Code , c : NodeRendererContext , html : HtmlWriter ): Unit =
55
- snippetCheckingFunc(node.getText.toString)
56
- c.delegateRender()
57
-
58
- object CodeBlockHandler extends CustomNodeRenderer [ast.CodeBlock ]:
59
- override def render (node : ast.CodeBlock , c : NodeRendererContext , html : HtmlWriter ): Unit =
60
- snippetCheckingFunc(node.getContentChars.toString)
53
+ object FencedCodeBlockHandler extends CustomNodeRenderer [ast.FencedCodeBlock ]:
54
+ override def render (node : ast.FencedCodeBlock , c : NodeRendererContext , html : HtmlWriter ): Unit =
55
+ val info = node.getInfo.toString
56
+ val argOverride =
57
+ info.split(" " )
58
+ .find(_.startsWith(" sc:" ))
59
+ .map(_.stripPrefix(" sc:" ))
60
+ .map(snippets.SnippetCompilerArgParser .parse)
61
+ .flatMap(_.toOption)
62
+ snippetCheckingFunc(node.getContentChars.toString, argOverride)
61
63
c.delegateRender()
62
64
63
65
object Handler extends CustomNodeRenderer [DocLinkNode ]:
@@ -68,8 +70,7 @@ case class DocFlexmarkRenderer(renderLink: (DocLink, String) => String, snippetC
68
70
override def getNodeRenderingHandlers : JSet [NodeRenderingHandler [_]] =
69
71
JSet (
70
72
new NodeRenderingHandler (classOf [DocLinkNode ], Handler ),
71
- new NodeRenderingHandler (classOf [ast.Code ], CodeHandler ),
72
- new NodeRenderingHandler (classOf [ast.CodeBlock ], CodeBlockHandler )
73
+ new NodeRenderingHandler (classOf [ast.FencedCodeBlock ], FencedCodeBlockHandler )
73
74
)
74
75
75
76
object Factory extends NodeRendererFactory :
@@ -79,6 +80,6 @@ case class DocFlexmarkRenderer(renderLink: (DocLink, String) => String, snippetC
79
80
htmlRendererBuilder.nodeRendererFactory(Factory )
80
81
81
82
object DocFlexmarkRenderer :
82
- def render (node : Node )(renderLink : (DocLink , String ) => String , snippetCheckingFunc : (String ) => Unit ) =
83
+ def render (node : Node )(renderLink : (DocLink , String ) => String , snippetCheckingFunc : (String , Option [snippets. SnippetCompilerArg ] ) => Unit ) =
83
84
val opts = MarkdownParser .mkMarkdownOptions(Seq (DocFlexmarkRenderer (renderLink, snippetCheckingFunc)))
84
85
HtmlRenderer .builder(opts).build().render(node)
0 commit comments