极狐GitLab 风格的 Markdown (GLFM) 开发指南
本页面及相邻页面包含极狐GitLab 风格的 Markdown (GLFM) 的开发者指南。要查阅极狐GitLab 中 Markdown 的用户文档,请参考 极狐GitLab 风格的 Markdown。
极狐GitLab 在多个位置支持 Markdown,例如议题或合并请求描述、评论和 Wiki。我们使用的 Markdown 实现称为极狐GitLab 风格的 Markdown (GLFM)。
CommonMark 是 GLFM 的核心。
...一个标准、明确的 Markdown 语法规范,以及一套全面的测试,用于根据此规范验证 Markdown 实现。
支持来自 GitHub 风格的 Markdown (GFM) 的扩展,例如表格和任务列表。然后添加各种 扩展,例如数学公式和多行块引用,从而创建 GLFM。
在代码中的许多地方,我们使用 gfm 或 GFM。在这些情况下,我们通常指的是通用的 Markdown,而不是特指 GLFM。
基本流程
为了生成显示给用户的 HTML,Markdown 通常按以下方式处理:
- 从用户或数据库中读取 Markdown,并交给后端。
- 运行处理流水线(称为“Banzai”流水线)。
- 进行一些预处理,然后使用 gitlab-glfm-markdown gem(它使用 comrak)转换为基本 HTML。
- 运行各种过滤器,进一步转换 HTML。例如,处理引用或自定义表情符号。
- 然后将 HTML 交给前端,前端以各种方式显示,或缓存在数据库中。
- 例如,富文本编辑器将 HTML 转换为 tiptap 所使用的格式,以便显示和编辑。
目标
我们的目标是 GLFM 始终 100% 符合 CommonMark。只有在确实必要时才会非常谨慎地添加新语法。在这种情况下,应该进行研究,找到最可接受的“Markdown”语法,如果有通用的实现,则紧密遵循。 CommonMark 论坛 是研究不同主题讨论的好地方。
其他资源
如果您有任何疑问,请联系 Plan:Knowledge 团队。