This library uses a three-step process to convert Markdown to HTML:
- Parse the various block and inline elements into an Abstract Syntax Tree (AST)
- Allow users to iterate and modify the parsed AST
- Render the final AST representation to HTML
You can hook into any of these three steps to customize this library to suit your needs.
Add Custom Syntax with Parsers
Parsers examine the Markdown input and produce an abstract syntax tree (AST) of the document’s structure. This resulting AST contains both blocks (structural elements like paragraphs, lists, headers, etc) and inlines (words, spaces, links, emphasis, etc).
There are two main types of parsers:
The parsing approach is identical for both types - examine text at the current position (via the
Cursor) and determine if you can handle it;
if so, create the corresponding AST element,
otherwise you abort and the engine will try other parsers. If no parser succeeds then the current text is treated as plain text.
Simple delimiter-based inlines (like emphasis, strikethrough, etc.) can be parsed without needing a dedicated inline parser by leveraging the new Delimiter Processing functionality.
Once the Abstract Syntax Tree is parsed, you are free to access/manipulate it as needed before it’s passed into the rendering engine.
Customize HTML Output with Custom Renderers
Renders convert the parsed blocks/inlines from the AST representation into HTML. There are two types of renderers:
When registering these with the environment, you must tell it which block/inline classes it should handle. This allows you to essentially “swap out” built-in renderers with your own.
Some examples of what’s possible: