跳转到主要内容

纯Python实现的快速、可扩展的Markdown解析器。

项目描述

寄生草-ebp

CI Status Coverage Documentation Status Code style: black PyPI Conda

这是由mistletoe维护的版本,由Excutable Book Project (EBP)维护。它跟踪ExecutableBookProject/mistletoemyst分支,希望最终能够合并到mistletoe本身。

mistletoe是一个纯Python实现的Markdown解析器,旨在快速、符合规范和完全可定制。

除了是纯Python实现的最快的CommonMark符合规范Markdown解析器实现之外,mistletoe还支持自定义标记的简单定义。将Markdown解析成抽象语法树还允许我们为不同的输出格式更换渲染器,而不必触及任何核心组件。

不幸的是,mistletoe目前没有在积极维护(截至2019年6月8日),因此创建了此分支,以便EBP可以部署并使用。以下是一个工作列表,列出了一些期望mistletoe实现的可'上流'的更改,这个版本已经开始实现。

  • 将测试从 unittest 转移到 pytest:现在 pytest 是事实上的测试架构,大大提高了测试的可用性和灵活性。
  • 引入 pre-commit 代码检查和格式化:这使代码风格在整个包中标准化,并确保新的提交和 Pull Requests 也符合这一标准。
  • 引入 ReadTheDocs 文档
  • 添加包的 conda-forge 发行版
  • 改进 AST API 和文档:我认为 panflute 在 Python 中对 pandoc API 的实现是 Pythonic AST API 编写和文档化的黄金标准。对当前标记类对象的一些调整和创建自动生成的 RTD 文档可以达成这一目标。
  • 存储源行/列范围:LSP 和良好的警告/错误渲染报告需要访问每个解析标记的源行和列范围。
  • 异步解析:LSP 要求文档异步解析。目前,Mistletoe 包含许多全局状态对象,这使得解析本身不是线程安全的。简单的解决方案是将这些项存储为 threading.local 对象。相关但更完整的方法是引入“范围会话”的概念,类似于 sqlalchemy 用于数据库访问:上下文/线程局部会话
  • 改进块标记的可扩展性:Markdown 解析器本质上是一个有限状态机 + 内存(即推下自动机(PDA)),解析标记作为状态(一个很好的 Python 状态机示例是 pytransitions)。可扩展性的问题在于,状态本质上相互依赖;当引入新的状态/标记时,必须为所有其他标记提供逻辑,以确定何时转换到这个新标记。目前,MyST 解析器几乎将 Mistletoe 的所有块标记子类化以实现所需的扩展,但如果有更系统的方法会更好。
  • 改进范围标记的可扩展性:Mistletoe 允许添加范围标记扩展,至少以一种简单的方式。然而,与上面的块标记一样,它们通常存在相互关联,特别是在考虑嵌套范围标记时。截至 7cc2c92,MyST-Parser 现在覆盖了一些 Mistletoe 的核心逻辑,以正确解析 Math 标记,但如果有可能,这应该更加通用。
  • 改进渲染逻辑:目前,Mistletoe 的 BaseRenderer 中没有递归遍历或“访问者”模式的概念,而这是渲染树结构(如 docutils/panflute 所用)的更好方法。此外,当前标记实例化(在上下文管理器内)也需要改进(参见 miyuchina/mistletoe#56)。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

mistletoe-ebp-0.10.0.tar.gz (50.8 kB 查看散列)

上传于

构建分发

mistletoe_ebp-0.10.0-py3-none-any.whl (61.9 kB 查看哈希值)

上传于 Python 3

由以下支持