We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
yozora: 一个基于中间件思想的、零外部依赖的 Markdown 解析器,用于将 Markdown 字符串转成 Markdown AST
yozora-react: 一个基于 React 的 Markdown 渲染器,用于将 Markdown AST 渲染成 React 组件
完整支持了 GFM 规范 中提到的所有规则,并通过了几乎所有由规范中的示 例改造成的测试用例(除了示例 https://github.github.com/gfm/#example-653,因为 渲染器 不打算支持原生的 HTML Tag,所以懒得做标签过滤,如果有需 要自行做一下过滤就好了)。
可参见 @yozora/parser-gfm or @yozora/parser-gfm-ex 以获得进一步信息。
健壮性
干净,零第三方依赖。
高性能
解析复杂度为字符串长度乘以分词器列表长度,已经达到了理论复杂度的下界;
解析器的 API 支持流式读入(采用生成器/迭代器进行输入),支持边读入边解析 (暂仅限于块级数据);
在读入字符串时,会将其预处理成字符编码及位置信息,使用 NodePoint 数据类型承载。在分词阶段通过扫描 NodePoint 的方式完成匹配, 虽然匹配过程更麻烦些,但理论上性能比正则表达式的匹配方式少一些常数;
小心地处理数组新建/连接操作,整个扫描阶段尽量复用数组,仅通过下标索引来圈定 匹配范围,并应用了不少策略减少重复匹配/解析操作。
兼容性,解析器解析出的 AST 与 Mdast 中定义的相兼容。即便以后 如果部分数据类型不兼容,也可以很容易通过 @yozora/ast-util 中提供的 API 去 遍历 AST 以进行适配修改。
可扩展性,yozora 采用中间件的方式,由内部算法驱动分词器列表完成解析工作,因而 易于创建并集成自定义的分词器。此项目中已实现了一些 GFM 中未提到的 数据类型的分词器,如 @yozora/tokenizer-admonition, @yozora/tokenizer-footnote 等,且均已内置于 @yozora/parser 中。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
yozora: 一个基于中间件思想的、零外部依赖的 Markdown 解析器,用于将 Markdown 字符串转成 Markdown AST
yozora-react: 一个基于 React 的 Markdown 渲染器,用于将 Markdown AST 渲染成 React 组件
yozora.demo.mp4
✨ Features
完整支持了 GFM 规范 中提到的所有规则,并通过了几乎所有由规范中的示
例改造成的测试用例(除了示例 https://github.github.com/gfm/#example-653,因为
渲染器 不打算支持原生的 HTML Tag,所以懒得做标签过滤,如果有需
要自行做一下过滤就好了)。
可参见 @yozora/parser-gfm or @yozora/parser-gfm-ex 以获得进一步信息。
健壮性
易于出错的问题;
干净,零第三方依赖。
高性能
解析复杂度为字符串长度乘以分词器列表长度,已经达到了理论复杂度的下界;
解析器的 API 支持流式读入(采用生成器/迭代器进行输入),支持边读入边解析
(暂仅限于块级数据);
在读入字符串时,会将其预处理成字符编码及位置信息,使用 NodePoint
数据类型承载。在分词阶段通过扫描 NodePoint 的方式完成匹配,
虽然匹配过程更麻烦些,但理论上性能比正则表达式的匹配方式少一些常数;
小心地处理数组新建/连接操作,整个扫描阶段尽量复用数组,仅通过下标索引来圈定
匹配范围,并应用了不少策略减少重复匹配/解析操作。
兼容性,解析器解析出的 AST 与 Mdast 中定义的相兼容。即便以后
如果部分数据类型不兼容,也可以很容易通过 @yozora/ast-util 中提供的 API 去
遍历 AST 以进行适配修改。
可扩展性,yozora 采用中间件的方式,由内部算法驱动分词器列表完成解析工作,因而
易于创建并集成自定义的分词器。此项目中已实现了一些 GFM 中未提到的
数据类型的分词器,如 @yozora/tokenizer-admonition, @yozora/tokenizer-footnote
等,且均已内置于 @yozora/parser 中。
The text was updated successfully, but these errors were encountered: