module hunt.markdown.ext.ins.InsExtension; import hunt.markdown.Extension; import hunt.markdown.ext.ins.internal.InsDelimiterProcessor; import hunt.markdown.ext.ins.internal.InsNodeRenderer; import hunt.markdown.renderer.html.HtmlNodeRendererContext; import hunt.markdown.renderer.html.HtmlNodeRendererFactory; import hunt.markdown.parser.Parser; import hunt.markdown.renderer.html.HtmlRenderer; import hunt.markdown.renderer.NodeRenderer; /** * Extension for ins using ++ * <p> * Create it with {@link #create()} and then configure it on the builders * ({@link hunt.markdown.parser.Parser.Builder#extensions(Iterable)}, * {@link HtmlRenderer.Builder#extensions(Iterable)}). * </p> * <p> * The parsed ins text regions are turned into {@link Ins} nodes. * </p> */ class InsExtension : Parser.ParserExtension, HtmlRenderer.HtmlRendererExtension { private this() { } public static Extension create() { return new InsExtension(); } override public void extend(Parser.Builder parserBuilder) { parserBuilder.customDelimiterProcessor(new InsDelimiterProcessor()); } override public void extend(HtmlRenderer.Builder rendererBuilder) { rendererBuilder.nodeRendererFactory(new class HtmlNodeRendererFactory { override public NodeRenderer create(HtmlNodeRendererContext context) { return new InsNodeRenderer(context); } }); } }