M0-M11 狩夜人笔记初始实现:11里程碑+86测试
This commit is contained in:
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
# 往返 fixture 集(Round-trip Corpus)
|
||||
|
||||
> 用途:狩夜人笔记编辑器 Markdown 往返回归基线。每个 .md 是一条输入语料;断言策略见《去风险验证任务书》A.5。
|
||||
> 判据:mdast 等价(输入 md 与往返结果 md 各自 parse 成 mdast 后 deep-equal),非字节相等。
|
||||
|
||||
## 文件清单与期望
|
||||
|
||||
| 文件 | 类别 | 期望 |
|
||||
|---|---|---|
|
||||
| emphasis-nested.md | 嵌套强调 | mdast-equal |
|
||||
| escaping.md | 反斜杠转义 | mdast-equal |
|
||||
| html.md | 裸 HTML | fenced-preserve(spike 决断) |
|
||||
| whitespace.md | 空白/空行/硬换行 | mdast-equal |
|
||||
| tables.md | GFM 表格与对齐 | mdast-equal |
|
||||
| codeblock.md | 代码块/嵌套围栏/语言 | mdast-equal |
|
||||
| tasklist.md | GFM 任务列表 | mdast-equal |
|
||||
| math.md | 数学公式 inline/block | mdast-equal(依赖 remark-math) |
|
||||
| links.md | 链接 inline/reference/autolink | mdast-equal |
|
||||
| images.md | 图片与图片链接 | mdast-equal |
|
||||
| blockquote.md | 嵌套引用 | mdast-equal |
|
||||
| lists-nested.md | 有序/无序嵌套、松紧 | mdast-equal |
|
||||
| headings.md | 一至六级标题 | mdast-equal |
|
||||
| breaks.md | 硬换行 | mdast-equal |
|
||||
| thematic-break.md | 分割线 | mdast-equal |
|
||||
| combined.md | 综合混合文档 | mdast-equal |
|
||||
|
||||
## 扩展规则
|
||||
|
||||
- 凡报告的往返丢字 bug,先转成新 fixture 再修,回归集只增不减。
|
||||
- 新增 fixture 在本表追加一行,并标注期望。
|
||||
|
||||
## 运行方式(spike/M2 落地后)
|
||||
|
||||
- 框架:Vitest;遍历本目录所有 .md(排除 README),逐条 md→PM→md 后按 mdast 等价断言。
|
||||
- mdast 解析统一用:unified + remark-parse + remark-gfm + remark-math。
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
# 引用
|
||||
|
||||
> 一层引用
|
||||
|
||||
> > 二层嵌套引用
|
||||
|
||||
> 引用内含列表:
|
||||
> - 项一
|
||||
> - 项二
|
||||
|
||||
> 引用内含代码:
|
||||
> `inline code`
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
# 硬换行
|
||||
|
||||
双空格硬换行第一行
|
||||
第二行。
|
||||
|
||||
反斜杠硬换行第一行\
|
||||
第二行。
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
# 代码块
|
||||
|
||||
```js
|
||||
const x = 1; // 行内注释
|
||||
```
|
||||
|
||||
无语言代码块:
|
||||
|
||||
```
|
||||
plain text
|
||||
```
|
||||
|
||||
嵌套围栏:外层 4 反引号包裹内层 3 反引号:
|
||||
|
||||
````
|
||||
```js
|
||||
inner code
|
||||
```
|
||||
````
|
||||
|
||||
行内代码 `含 * 星号不解析`。
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
# 综合文档
|
||||
|
||||
一段含 **粗**、*斜*、`code` 与 [链接](https://example.com) 的引言。
|
||||
|
||||
## 列表与任务
|
||||
|
||||
- [x] 项一
|
||||
- 子项
|
||||
- [ ] 项二
|
||||
|
||||
## 代码
|
||||
|
||||
```ts
|
||||
function add(a: number, b: number) {
|
||||
return a + b;
|
||||
}
|
||||
```
|
||||
|
||||
## 表格
|
||||
|
||||
| A | B |
|
||||
|---|---|
|
||||
| 1 | 2 |
|
||||
|
||||
> 引用收尾
|
||||
|
||||
---
|
||||
|
||||
$$E=mc^2$$
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
# 嵌套强调
|
||||
|
||||
**外层粗体 *内层斜体* 收尾**
|
||||
|
||||
***粗斜合一***
|
||||
|
||||
*斜体中含 **粗体** 嵌套*
|
||||
|
||||
**粗体中含 *斜体* 嵌套**
|
||||
|
||||
两端星号与下划线混用:_下划线斜体_ 与 *星号斜体*。
|
||||
|
||||
不配对的孤立星号 * 不影响其余文本。
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
# 反斜杠转义
|
||||
|
||||
这里 \*不是斜体\* 而是 literal 星号。
|
||||
|
||||
这里 \`不是代码\` 而是 literal 反引号。
|
||||
|
||||
反斜杠本身:\\ 输出一个反斜杠。
|
||||
|
||||
反斜杠转义井号:\# 不是标题。
|
||||
|
||||
反斜杠转义句点:1\. 不是有序列表。
|
||||
|
||||
反斜杠转义管道:a \| b 在表格外应保留。
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
# 一级标题
|
||||
|
||||
## 二级标题
|
||||
|
||||
### 三级标题
|
||||
|
||||
#### 四级标题
|
||||
|
||||
##### 五级标题
|
||||
|
||||
###### 六级标题
|
||||
|
||||
带尾随井号的标题 ##
|
||||
|
||||
> 仅 ATX 标题;Setext 是否支持由 spike 决断。
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
# 裸 HTML 处置
|
||||
|
||||
这是一段含 <strong>HTML</strong> 的文本。
|
||||
|
||||
<div>块级 HTML</div>
|
||||
|
||||
<!-- 注释 -->
|
||||
|
||||
> 期望:schema 禁用裸 HTML;spike 决断为转义为文本、代码围栏保留或透传。本 fixture 用于锁定该决断的往返行为。
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
# 图片
|
||||
|
||||

|
||||
|
||||
无 title 图片 
|
||||
|
||||
图片链接 [](https://example.com/full)
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
# 链接
|
||||
|
||||
行内链接 [文本](https://example.com "标题")。
|
||||
|
||||
无 title 链接 [文本](https://example.com)。
|
||||
|
||||
引用链接 [文本][ref] 与定义 [ref]: https://example.com "标题"。
|
||||
|
||||
自动链接 <https://example.com>。
|
||||
|
||||
含特殊字符的链接 [a/b](https://example.com/a/b)。
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
# 嵌套列表
|
||||
|
||||
- 无序一
|
||||
- 子项 a
|
||||
- 孙项 i
|
||||
- 子项 b
|
||||
- 无序二
|
||||
|
||||
1. 有序一
|
||||
1. 子序 1
|
||||
2. 子序 2
|
||||
2. 有序二
|
||||
|
||||
松散列表(项间空行):
|
||||
|
||||
- 项一
|
||||
|
||||
- 项二
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
# 数学公式
|
||||
|
||||
行内公式 $E = mc^2$ 嵌于文本。
|
||||
|
||||
块级公式:
|
||||
|
||||
$$
|
||||
\int_0^1 x^2 \, dx = \frac{1}{3}
|
||||
$$
|
||||
|
||||
> 依赖 remark-math;spike 确认序列化保留 $ 与 $$ 围栏。
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
# GFM 表格
|
||||
|
||||
| 左对齐 | 居中 | 右对齐 |
|
||||
|:---|:---:|---:|
|
||||
| a | b | c |
|
||||
| d | e | f |
|
||||
|
||||
含特殊字符的单元格:
|
||||
|
||||
| 符号 | 值 |
|
||||
|---|---|
|
||||
| pipe \| 转义 | 1 |
|
||||
| *斜* 单元 | 2 |
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
# 任务列表
|
||||
|
||||
- [x] 已完成项
|
||||
- [ ] 未完成项
|
||||
- [ ] 另一个未完成
|
||||
|
||||
有序任务:
|
||||
|
||||
1. [x] 第一
|
||||
2. [ ] 第二
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
# 分割线
|
||||
|
||||
---
|
||||
|
||||
***
|
||||
|
||||
___
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
# 空白与空行
|
||||
|
||||
一段文本。
|
||||
|
||||
|
||||
|
||||
连续多个空行后的段落应保留为单一段落分隔。
|
||||
|
||||
尾部带两个空格的行
|
||||
应为硬换行延续到本行。
|
||||
|
||||
行首缩进三空格不影响段落。
|
||||
Reference in New Issue
Block a user