No project description provided
Project description
MarkdownParser
MarkdownParser 是一个 Markdown 语法解析器,用于实现md到html标签的转换
安装
pip install markdownparser
快速使用
import MarkdownParser
html = MarkdownParser.parse('# Hello World!')
print(html)
#<div class='markdown-body'><h1>Hello World!</h1></div>
其他接口函数
parseFile(file_name:str)->str
: 解析文件
接口类
-
Markdown
使用类创建对象后可以利用
self.preprocess_parser
self.block_parser
self.tree_parser
控制解析过程其中Block类属性见base_class.py,可以通过调用block.info()函数查看树的结构
tree可以通过内部toHTML()方法得到HTML元素
测试
您可以使用 test.py
测试Markdown解析是否正确
python test.py <FILE_NAME>
# python test.py ./testfiles/test1.md
# python test.py README.md
运行会生成index.html, 使用浏览器打开生成的index.html即可与您的Markdown编辑器的预期渲染结果对比
实现思路
您可通过取消 core.py 注释来获取树的结构
def parse(self, text: str) -> str:
# 去除空行/注释/html标签
lines = self.preprocess_parser(text)
# print(lines)
# 逐行解析,得到一颗未优化的树
root = self.block_parser(lines)
# root.info()
# 优化,得到正确的markdown解析树
tree = self.tree_parser(root)
# tree.info()
# 输出到屏幕 / 导出html文件
return tree.toHTML()
不支持
-
四个空格变为代码段(不想支持)
-
[^1]的引用方式(不想支持)
-
Latex数学公式(不会支持)
-
Setext 形式的标题(不想支持)
-
上标 / 下标 / 下划线(不想支持)
-
SpecialTextBlock中叠加使用有可能会有bug(没想好怎么支持)
-
TOC与锚点(暂不支持)
锚点的添加通常和目录的跳转有关,而目录树的生成可以考虑解析tree的根Block的所有子HashHeaderBlock来构建.
因为跳转的功能是js实现,锚点id的加入也会影响html结构,所以暂不支持
其他特性
- 最外层为div包裹,类名为
markdown-body
- 代码段会根据语言加入一个类名便于后期高亮
class="language-cpp"
, 未定义语言则为language-UNKNOWN
- 列表嵌套稍有不同,ul/ol+li完全体
相关参考
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
markdownparser-0.3.5.tar.gz
(13.7 kB
view hashes)
Built Distribution
Close
Hashes for markdownparser-0.3.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9ce17b6f900c0278b65c4aad98c3f8c0ab9039524939b9ba1a8d6dafeb46e32 |
|
MD5 | 3da087f5145ba3e6295ab6f10f860a04 |
|
BLAKE2b-256 | 1613db0b6ed7b14f6a5db61cb28fa2fbfd362b7515bea1057c64ef5c58c4dbcf |