提供 Markdown 的解析和 HTML 渲染能力,基于 .NET 6。
可以解析任意 Markdown 字符串
using Cyjb.Markdown;
using Cyjb.Markdown.Renderer;
// 将 Markdown 字符串解析成语法树。
Document doc = Document.Parse("This is a **markdown**");
// 将语法树渲染成 HTML 字符串。
HtmlRenderer renderer = new();
doc.Accept(renderer);
Console.WriteLine(renderer);
// <p>This is a <strong>markdown</strong></p>
可以通过 Document.Parse
方法的 options
参数指定需要使用的 Markdown 特性,所有支持的 Markdown 特性参见下文。
可以利用 SyntaxVisitor
遍历 Markdown 语法树,提供定制的逻辑。
- 支持完整的 CommonMark 0.31.2,具体请参见这里。
- 支持部分 GitHub Flavored Markdown (GFM),具体包括:
- 支持额外的列表样式:
a. item
、i. item
或α. item
,具体规范请参见这里。 - 支持数学公式:
$ $
或$$ $$
,具体规范请参见这里。 - 支持为标题、代码块、链接和图片添加属性:
{#id .class key=value}
,具体规范请参见这里。 - 支持为标题自动生成标识符,具体规范请参见这里。
- 支持直接将标题内容作为链接标签使用,具体规范请参见这里。
- 支持自定义容器:
:::detail :::
,具体规范请参见这里。
- 下标:
<sub> </sub>
。 - 上标:
<sup> </sup>
。 - 下划线:
<u> </u>
。
Markdown 解析用到了由 Cyjb.Compilers.Design 在设计时生成的词法分析器,因此预计不会提供运行时扩展 Markdown 特性的能力。
详细的类库文档,请参见 Wiki。
欢迎访问我的博客获取更多信息。