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