xoofx / markdig

A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET
BSD 2-Clause "Simplified" License
4.2k stars 443 forks source link

Question: Guidance on implementing Plantuml renderer #763

Open cjlotz opened 6 months ago

cjlotz commented 6 months ago

Hello. We are looking to add the ability to render Plantuml diagrams using markdig. We've noticed that Markdig.Diagrams has support for nonoml and mermaid diagrams. Is there any documentation that shows the extensibility points for how to go about adding support for Plantuml?

xoofx commented 6 months ago

Is there any documentation that shows the extensibility points for how to go about adding support for Plantuml?

Unfortunately, no doc, but the diagram extension here should be quite straightforward and the HTML code renderer handling it is here

In general, most of the extensions in the Markdig codebase are easy enough to understand them to develop your own.

cjlotz commented 6 months ago

Thanks @xoofx for the feedback.

I had a look at the implementations, and they seem simple enough due to the fact that both mermaid and nomnoml has support for rendering the diagrams using a JS library. Support for rendering Plantuml using Javascript is still experimental and based on wasm with some issues that I want to avoid. There are existing libraries for transforming the Plantuml code block into a SVG and was hoping to use the libraries to transform the code block into a div that wraps the rendered SVG. This implies some kind of pre-processing and also the ability to specify the configuration for the plantuml server to use for rendering the SVG.

Do the same extension points still apply given the above mentioned description?

xoofx commented 6 months ago

Do the same extension points still apply given the above mentioned description?

You might have to write your own HTML renderer or transform the AST before rendering (e.g transform the codeblock to a HTML block)