标记文是豫言写的 Markdown 转换库:把 Markdown 文本转换成网页片段。输出格式仿照 kramdown 的 GFM 模式(Jekyll 的默认 Markdown 引擎),方便替换原先用 Jekyll 生成的站点。
包身份
所有者:豫言。包版本:0.1.0。本包为库类型,只依赖标准库。
使用
寻观「标记文」之书。
「打印行」于(「标记文转网页」于『# 标题「:换行:」「:换行:」正文 **粗体**』)。
总集导出:
「标记文转网页」:把 Markdown 文本转换成网页片段;块之间空一行,结尾带换行。「网页正文转义」:转义&、<、>。「网页属性转义」:再加上双引号与单引号,与 Liquid 的escape过滤器相同。「文分行」、「去空白」等文字辅助函数。
支持的写法
块级:
- ATX 标题(一至六个
#加空白)。标题 id 按 kramdown GFM 规则生成:转小写,删去标点与符号,空格改为连字符;同一篇中重复的 id 依次加-1、-2。 - 围栏代码(三个以上反引号或波浪号)。有语言名时输出
<pre><code class="language-语言">。 - GFM 表格:以竖线开头的连续行;第二行是对齐分隔行时第一行作表头,冒号表示左、右、居中对齐。
- 无序列表(
-、*、+)与有序列表(数字.),每项可以跨行。 - 引用(
>)、分隔线(三个以上-、*或_)。 - 网页块:以块级标签开头的行,一直收到同名标签开闭相抵的那一行为止,中间的空行不结束网页块;块内原样输出。注释收到
-->为止。 - 段落:其余的行。
行内:
- 代码段(
代码,多个反引号时去掉首尾各一个空格)、**粗体**、*斜体*。 - 链接
[文字](网址 "标题")、图片、自动链接<https://…>。 - 行内网页标签原样输出;字符实体(
&、'等)原样输出;反斜杠转义 ASCII 标点。
限制
下列写法尚未支持,代码里以“待办事项”注明:缩进代码块、Setext 标题、嵌套列表、松散列表(项之间有空行时会分成两个列表)、下划线强调、引用式链接、脚注、定义列表、{: } 属性、硬换行,以及 kramdown 的智能引号与 --、... 等排版替换。强调与链接的闭合查找不跳过其中的代码段。标题 id 判断“词字符”时使用近似的码点区间表。
测试
测试在 测试/,是独立的「标记文测试」包(需要单元测试框架)。在仓库根目录运行:
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 标记文测试 渲染。测试 --输出 yy标记文测试.wasm -j 24
node 豫言操作系统/宿主/节点/宿主.cjs yy标记文测试.wasm