Skip to main content

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编辑器的预期渲染结果对比

20230218202400

实现思路

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


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)

Uploaded Source

Built Distribution

markdownparser-0.3.5-py3-none-any.whl (16.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page