remark-dl-list 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-ja.md +198 -0
- package/README.md +82 -7
- package/dist/index.js +9 -753
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/README-ja.md
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# remark-dl-list
|
|
2
|
+
|
|
3
|
+
`<dl>`, `<dt>`, `<dd>` を使った
|
|
4
|
+
**コロン記法の定義リスト**をサポートする **remark プラグイン**です。
|
|
5
|
+
|
|
6
|
+
このプラグインは remark に定義リストのサポートを追加し、
|
|
7
|
+
Markdown へのラウンドトリップ(再シリアライズ)を可能にします。
|
|
8
|
+
|
|
9
|
+
定義リストの詳細な構文については、
|
|
10
|
+
→ **[docs/syntax-ja.md](https://github.com/kanemu/unified-dl-list/blob/main/docs/syntax-ja.md)** を参照してください。
|
|
11
|
+
|
|
12
|
+
## インストール
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install remark-dl-list
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
または pnpm を使用する場合:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pnpm add remark-dl-list
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 使い方
|
|
25
|
+
|
|
26
|
+
### 基本的な使い方(Markdown ⇄ Markdown)
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
import { unified } from 'unified'
|
|
30
|
+
import remarkParse from 'remark-parse'
|
|
31
|
+
import remarkStringify from 'remark-stringify'
|
|
32
|
+
import { remarkDlList } from 'remark-dl-list'
|
|
33
|
+
|
|
34
|
+
const md = `
|
|
35
|
+
: term1
|
|
36
|
+
: description1
|
|
37
|
+
: description2
|
|
38
|
+
|
|
39
|
+
Still the same paragraph.
|
|
40
|
+
`
|
|
41
|
+
|
|
42
|
+
const file = await unified()
|
|
43
|
+
.use(remarkParse)
|
|
44
|
+
.use(remarkDlList)
|
|
45
|
+
.use(remarkStringify)
|
|
46
|
+
.process(md)
|
|
47
|
+
|
|
48
|
+
console.log(String(file))
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
出力:
|
|
52
|
+
|
|
53
|
+
```md
|
|
54
|
+
: term1
|
|
55
|
+
: description1
|
|
56
|
+
: description2
|
|
57
|
+
|
|
58
|
+
Still the same paragraph.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### HTML 出力
|
|
62
|
+
|
|
63
|
+
このプラグインは **`remark-rehype` を自動ではインストールしません**。
|
|
64
|
+
|
|
65
|
+
HTML を生成するには、`remark-rehype` と
|
|
66
|
+
`hast-util-dl-list` を組み合わせて使用してください。
|
|
67
|
+
|
|
68
|
+
```js
|
|
69
|
+
import { unified } from 'unified'
|
|
70
|
+
import remarkParse from 'remark-parse'
|
|
71
|
+
import remarkRehype from 'remark-rehype'
|
|
72
|
+
import rehypeStringify from 'rehype-stringify'
|
|
73
|
+
import { remarkDlList } from 'remark-dl-list'
|
|
74
|
+
import { dlListHandlers } from 'hast-util-dl-list'
|
|
75
|
+
|
|
76
|
+
const html = await unified()
|
|
77
|
+
.use(remarkParse)
|
|
78
|
+
.use(remarkDlList)
|
|
79
|
+
.use(remarkRehype, {
|
|
80
|
+
handlers: dlListHandlers()
|
|
81
|
+
})
|
|
82
|
+
.use(rehypeStringify)
|
|
83
|
+
.process(`
|
|
84
|
+
: term
|
|
85
|
+
: description
|
|
86
|
+
`)
|
|
87
|
+
|
|
88
|
+
console.log(String(html))
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `remark-dl-list` を GFM(取り消し線)と併用する
|
|
92
|
+
|
|
93
|
+
`remark-dl-list` を他の remark プラグイン(例: GFM)と一緒に使う場合は、
|
|
94
|
+
**それらのプラグインを `remark-dl-list` より前に登録してください**。
|
|
95
|
+
|
|
96
|
+
これは、`remark-dl-list` が **`dt` / `dd` の中身を内部で再パースする**ためです。
|
|
97
|
+
|
|
98
|
+
#### Markdown → HTML の例(取り消し線あり)
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
import { unified } from 'unified'
|
|
102
|
+
import remarkParse from 'remark-parse'
|
|
103
|
+
import remarkGfm from 'remark-gfm'
|
|
104
|
+
import remarkRehype from 'remark-rehype'
|
|
105
|
+
import rehypeStringify from 'rehype-stringify'
|
|
106
|
+
|
|
107
|
+
import { remarkDlList } from 'remark-dl-list'
|
|
108
|
+
import { dlListHandlers } from 'hast-util-dl-list'
|
|
109
|
+
|
|
110
|
+
const processor = unified()
|
|
111
|
+
.use(remarkParse)
|
|
112
|
+
|
|
113
|
+
// 他のプラグイン(GFM など)を先に登録
|
|
114
|
+
.use(remarkGfm)
|
|
115
|
+
|
|
116
|
+
// その後で remark-dl-list を登録
|
|
117
|
+
.use(remarkDlList)
|
|
118
|
+
|
|
119
|
+
// mdast → hast
|
|
120
|
+
.use(remarkRehype, {
|
|
121
|
+
handlers: {
|
|
122
|
+
...dlListHandlers(),
|
|
123
|
+
},
|
|
124
|
+
})
|
|
125
|
+
.use(rehypeStringify)
|
|
126
|
+
|
|
127
|
+
const md = `\
|
|
128
|
+
: fruits
|
|
129
|
+
: **apple**
|
|
130
|
+
_grape_
|
|
131
|
+
~~orange~~
|
|
132
|
+
`
|
|
133
|
+
|
|
134
|
+
const html = processor.processSync(md).toString()
|
|
135
|
+
console.log(html)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
出力:
|
|
139
|
+
|
|
140
|
+
```html
|
|
141
|
+
<dl>
|
|
142
|
+
<dt>fruits</dt>
|
|
143
|
+
<dd>
|
|
144
|
+
<strong>apple</strong>
|
|
145
|
+
<em>grape</em>
|
|
146
|
+
<del>orange</del>
|
|
147
|
+
</dd>
|
|
148
|
+
</dl>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## このプラグインがすること
|
|
152
|
+
|
|
153
|
+
* remark にコロン記法の定義リスト構文を追加します
|
|
154
|
+
* 定義リストを mdast ノードとしてパースします
|
|
155
|
+
* 1つの `<dt>` に対して複数の `<dd>` をサポートします
|
|
156
|
+
* `<dd>` の中でブロック要素をサポートします
|
|
157
|
+
* Markdown へのラウンドトリップ(再シリアライズ)をサポートします
|
|
158
|
+
|
|
159
|
+
## このプラグインがしないこと
|
|
160
|
+
|
|
161
|
+
* `remark-rehype` を自動的にインストールしません
|
|
162
|
+
* 単体で HTML を生成しません
|
|
163
|
+
* 定義リスト構文が存在しない場合の通常の Markdown の挙動は変更しません
|
|
164
|
+
|
|
165
|
+
## 構文
|
|
166
|
+
|
|
167
|
+
```md
|
|
168
|
+
: term
|
|
169
|
+
: description
|
|
170
|
+
: another description
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
は次のように変換されます。
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<dl>
|
|
177
|
+
<dt>term</dt>
|
|
178
|
+
<dd>description</dd>
|
|
179
|
+
<dd>another description</dd>
|
|
180
|
+
</dl>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 関連パッケージ
|
|
184
|
+
|
|
185
|
+
このパッケージは **[unified-dl-list](https://github.com/kanemu/unified-dl-list)** モノレポの一部です。
|
|
186
|
+
|
|
187
|
+
* [`micromark-extension-dl-list`](https://www.npmjs.com/package/micromark-extension-dl-list) – micromark 用の構文拡張
|
|
188
|
+
* [`mdast-util-dl-list`](https://www.npmjs.com/package/mdast-util-dl-list) – mdast のパースとシリアライズ
|
|
189
|
+
* [`hast-util-dl-list`](https://www.npmjs.com/package/hast-util-dl-list) – remark-rehype 用の HTML ハンドラ
|
|
190
|
+
|
|
191
|
+
### 関連プロジェクト
|
|
192
|
+
|
|
193
|
+
- [`markdown-it-dl-list`](https://www.npmjs.com/package/markdown-it-dl-list)
|
|
194
|
+
同じコロン記法の説明リスト構文を提供する markdown-it 用プラグインです。
|
|
195
|
+
|
|
196
|
+
## ライセンス
|
|
197
|
+
|
|
198
|
+
MIT
|
package/README.md
CHANGED
|
@@ -6,6 +6,9 @@ using `<dl>`, `<dt>`, and `<dd>` syntax.
|
|
|
6
6
|
This plugin adds support for definition lists to remark and allows
|
|
7
7
|
round-trip serialization back to markdown.
|
|
8
8
|
|
|
9
|
+
For the detailed definition list syntax,
|
|
10
|
+
→ **[docs/syntax.md](https://github.com/kanemu/unified-dl-list/blob/main/docs/syntax.md)**.
|
|
11
|
+
|
|
9
12
|
## Installation
|
|
10
13
|
|
|
11
14
|
```bash
|
|
@@ -55,7 +58,7 @@ Output:
|
|
|
55
58
|
Still the same paragraph.
|
|
56
59
|
```
|
|
57
60
|
|
|
58
|
-
|
|
61
|
+
### HTML output
|
|
59
62
|
|
|
60
63
|
This plugin **does not install `remark-rehype` automatically**.
|
|
61
64
|
|
|
@@ -85,6 +88,76 @@ const html = await unified()
|
|
|
85
88
|
console.log(String(html))
|
|
86
89
|
```
|
|
87
90
|
|
|
91
|
+
### Using `remark-dl-list` with GFM (strikethrough)
|
|
92
|
+
|
|
93
|
+
When you use `remark-dl-list` together with other remark plugins (such as GFM),
|
|
94
|
+
**register those plugins before `remark-dl-list`** so that definition list
|
|
95
|
+
contents (`dt` / `dd`) can inherit their syntax during re-parsing.
|
|
96
|
+
|
|
97
|
+
#### Markdown → HTML example (with strikethrough)
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
import { unified } from 'unified'
|
|
101
|
+
import remarkParse from 'remark-parse'
|
|
102
|
+
import remarkGfm from 'remark-gfm'
|
|
103
|
+
import remarkRehype from 'remark-rehype'
|
|
104
|
+
import rehypeStringify from 'rehype-stringify'
|
|
105
|
+
|
|
106
|
+
import { remarkDlList } from 'remark-dl-list'
|
|
107
|
+
import { dlListHandlers } from 'hast-util-dl-list'
|
|
108
|
+
|
|
109
|
+
const processor = unified()
|
|
110
|
+
.use(remarkParse)
|
|
111
|
+
|
|
112
|
+
// Register other plugins FIRST (e.g. GFM)
|
|
113
|
+
.use(remarkGfm)
|
|
114
|
+
|
|
115
|
+
// Then register remark-dl-list
|
|
116
|
+
.use(remarkDlList)
|
|
117
|
+
|
|
118
|
+
// Convert mdast → hast
|
|
119
|
+
.use(remarkRehype, {
|
|
120
|
+
handlers: {
|
|
121
|
+
...dlListHandlers(),
|
|
122
|
+
},
|
|
123
|
+
})
|
|
124
|
+
.use(rehypeStringify)
|
|
125
|
+
|
|
126
|
+
const md = `\
|
|
127
|
+
: fruits
|
|
128
|
+
: **apple**
|
|
129
|
+
_grape_
|
|
130
|
+
~~orange~~
|
|
131
|
+
`
|
|
132
|
+
|
|
133
|
+
const html = processor.processSync(md).toString()
|
|
134
|
+
console.log(html)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Output:
|
|
138
|
+
|
|
139
|
+
```html
|
|
140
|
+
<dl>
|
|
141
|
+
<dt>fruits</dt>
|
|
142
|
+
<dd>
|
|
143
|
+
<strong>apple</strong>
|
|
144
|
+
<em>grape</em>
|
|
145
|
+
<del>orange</del>
|
|
146
|
+
</dd>
|
|
147
|
+
</dl>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### Important notes
|
|
151
|
+
|
|
152
|
+
* `remark-dl-list` **re-parses the contents of `dt` and `dd` internally**.
|
|
153
|
+
* Therefore, any syntax extensions you want to use inside definition lists
|
|
154
|
+
(such as GFM strikethrough) **must already be registered** when
|
|
155
|
+
`remark-dl-list` runs.
|
|
156
|
+
* Always place `remark-dl-list` **after** plugins like `remark-gfm`.
|
|
157
|
+
|
|
158
|
+
> ✔ Correct order
|
|
159
|
+
> `remark-parse → remark-gfm → remark-dl-list → remark-rehype`
|
|
160
|
+
|
|
88
161
|
## What this plugin does
|
|
89
162
|
|
|
90
163
|
* Adds colon-based definition list syntax to remark
|
|
@@ -117,16 +190,18 @@ is converted to:
|
|
|
117
190
|
</dl>
|
|
118
191
|
```
|
|
119
192
|
|
|
120
|
-
For the detailed definition list syntax,
|
|
121
|
-
→ **[docs/syntax.md](https://github.com/kanemu/unified-dl-list/blob/main/docs/syntax.md)**.
|
|
122
|
-
|
|
123
193
|
## Related packages
|
|
124
194
|
|
|
125
195
|
This package is part of the **[unified-dl-list](https://github.com/kanemu/unified-dl-list)** monorepo:
|
|
126
196
|
|
|
127
|
-
- [`micromark-extension-dl-list`](https://
|
|
128
|
-
- [`mdast-util-dl-list`](https://
|
|
129
|
-
- [`hast-util-dl-list`](https://
|
|
197
|
+
- [`micromark-extension-dl-list`](https://www.npmjs.com/package/micromark-extension-dl-list) – micromark syntax extension
|
|
198
|
+
- [`mdast-util-dl-list`](https://www.npmjs.com/package/mdast-util-dl-list) – mdast parsing and serialization
|
|
199
|
+
- [`hast-util-dl-list`](https://www.npmjs.com/package/hast-util-dl-list) – HTML handlers for remark-rehype
|
|
200
|
+
|
|
201
|
+
### Related projects
|
|
202
|
+
|
|
203
|
+
- [`markdown-it-dl-list`](https://www.npmjs.com/package/markdown-it-dl-list)
|
|
204
|
+
A markdown-it plugin that provides the same colon-based definition list syntax.
|
|
130
205
|
|
|
131
206
|
## License
|
|
132
207
|
|
package/dist/index.js
CHANGED
|
@@ -1,764 +1,20 @@
|
|
|
1
|
-
// ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js
|
|
2
|
-
var codes = (
|
|
3
|
-
/** @type {const} */
|
|
4
|
-
{
|
|
5
|
-
carriageReturn: -5,
|
|
6
|
-
lineFeed: -4,
|
|
7
|
-
carriageReturnLineFeed: -3,
|
|
8
|
-
horizontalTab: -2,
|
|
9
|
-
virtualSpace: -1,
|
|
10
|
-
eof: null,
|
|
11
|
-
nul: 0,
|
|
12
|
-
soh: 1,
|
|
13
|
-
stx: 2,
|
|
14
|
-
etx: 3,
|
|
15
|
-
eot: 4,
|
|
16
|
-
enq: 5,
|
|
17
|
-
ack: 6,
|
|
18
|
-
bel: 7,
|
|
19
|
-
bs: 8,
|
|
20
|
-
ht: 9,
|
|
21
|
-
// `\t`
|
|
22
|
-
lf: 10,
|
|
23
|
-
// `\n`
|
|
24
|
-
vt: 11,
|
|
25
|
-
// `\v`
|
|
26
|
-
ff: 12,
|
|
27
|
-
// `\f`
|
|
28
|
-
cr: 13,
|
|
29
|
-
// `\r`
|
|
30
|
-
so: 14,
|
|
31
|
-
si: 15,
|
|
32
|
-
dle: 16,
|
|
33
|
-
dc1: 17,
|
|
34
|
-
dc2: 18,
|
|
35
|
-
dc3: 19,
|
|
36
|
-
dc4: 20,
|
|
37
|
-
nak: 21,
|
|
38
|
-
syn: 22,
|
|
39
|
-
etb: 23,
|
|
40
|
-
can: 24,
|
|
41
|
-
em: 25,
|
|
42
|
-
sub: 26,
|
|
43
|
-
esc: 27,
|
|
44
|
-
fs: 28,
|
|
45
|
-
gs: 29,
|
|
46
|
-
rs: 30,
|
|
47
|
-
us: 31,
|
|
48
|
-
space: 32,
|
|
49
|
-
exclamationMark: 33,
|
|
50
|
-
// `!`
|
|
51
|
-
quotationMark: 34,
|
|
52
|
-
// `"`
|
|
53
|
-
numberSign: 35,
|
|
54
|
-
// `#`
|
|
55
|
-
dollarSign: 36,
|
|
56
|
-
// `$`
|
|
57
|
-
percentSign: 37,
|
|
58
|
-
// `%`
|
|
59
|
-
ampersand: 38,
|
|
60
|
-
// `&`
|
|
61
|
-
apostrophe: 39,
|
|
62
|
-
// `'`
|
|
63
|
-
leftParenthesis: 40,
|
|
64
|
-
// `(`
|
|
65
|
-
rightParenthesis: 41,
|
|
66
|
-
// `)`
|
|
67
|
-
asterisk: 42,
|
|
68
|
-
// `*`
|
|
69
|
-
plusSign: 43,
|
|
70
|
-
// `+`
|
|
71
|
-
comma: 44,
|
|
72
|
-
// `,`
|
|
73
|
-
dash: 45,
|
|
74
|
-
// `-`
|
|
75
|
-
dot: 46,
|
|
76
|
-
// `.`
|
|
77
|
-
slash: 47,
|
|
78
|
-
// `/`
|
|
79
|
-
digit0: 48,
|
|
80
|
-
// `0`
|
|
81
|
-
digit1: 49,
|
|
82
|
-
// `1`
|
|
83
|
-
digit2: 50,
|
|
84
|
-
// `2`
|
|
85
|
-
digit3: 51,
|
|
86
|
-
// `3`
|
|
87
|
-
digit4: 52,
|
|
88
|
-
// `4`
|
|
89
|
-
digit5: 53,
|
|
90
|
-
// `5`
|
|
91
|
-
digit6: 54,
|
|
92
|
-
// `6`
|
|
93
|
-
digit7: 55,
|
|
94
|
-
// `7`
|
|
95
|
-
digit8: 56,
|
|
96
|
-
// `8`
|
|
97
|
-
digit9: 57,
|
|
98
|
-
// `9`
|
|
99
|
-
colon: 58,
|
|
100
|
-
// `:`
|
|
101
|
-
semicolon: 59,
|
|
102
|
-
// `;`
|
|
103
|
-
lessThan: 60,
|
|
104
|
-
// `<`
|
|
105
|
-
equalsTo: 61,
|
|
106
|
-
// `=`
|
|
107
|
-
greaterThan: 62,
|
|
108
|
-
// `>`
|
|
109
|
-
questionMark: 63,
|
|
110
|
-
// `?`
|
|
111
|
-
atSign: 64,
|
|
112
|
-
// `@`
|
|
113
|
-
uppercaseA: 65,
|
|
114
|
-
// `A`
|
|
115
|
-
uppercaseB: 66,
|
|
116
|
-
// `B`
|
|
117
|
-
uppercaseC: 67,
|
|
118
|
-
// `C`
|
|
119
|
-
uppercaseD: 68,
|
|
120
|
-
// `D`
|
|
121
|
-
uppercaseE: 69,
|
|
122
|
-
// `E`
|
|
123
|
-
uppercaseF: 70,
|
|
124
|
-
// `F`
|
|
125
|
-
uppercaseG: 71,
|
|
126
|
-
// `G`
|
|
127
|
-
uppercaseH: 72,
|
|
128
|
-
// `H`
|
|
129
|
-
uppercaseI: 73,
|
|
130
|
-
// `I`
|
|
131
|
-
uppercaseJ: 74,
|
|
132
|
-
// `J`
|
|
133
|
-
uppercaseK: 75,
|
|
134
|
-
// `K`
|
|
135
|
-
uppercaseL: 76,
|
|
136
|
-
// `L`
|
|
137
|
-
uppercaseM: 77,
|
|
138
|
-
// `M`
|
|
139
|
-
uppercaseN: 78,
|
|
140
|
-
// `N`
|
|
141
|
-
uppercaseO: 79,
|
|
142
|
-
// `O`
|
|
143
|
-
uppercaseP: 80,
|
|
144
|
-
// `P`
|
|
145
|
-
uppercaseQ: 81,
|
|
146
|
-
// `Q`
|
|
147
|
-
uppercaseR: 82,
|
|
148
|
-
// `R`
|
|
149
|
-
uppercaseS: 83,
|
|
150
|
-
// `S`
|
|
151
|
-
uppercaseT: 84,
|
|
152
|
-
// `T`
|
|
153
|
-
uppercaseU: 85,
|
|
154
|
-
// `U`
|
|
155
|
-
uppercaseV: 86,
|
|
156
|
-
// `V`
|
|
157
|
-
uppercaseW: 87,
|
|
158
|
-
// `W`
|
|
159
|
-
uppercaseX: 88,
|
|
160
|
-
// `X`
|
|
161
|
-
uppercaseY: 89,
|
|
162
|
-
// `Y`
|
|
163
|
-
uppercaseZ: 90,
|
|
164
|
-
// `Z`
|
|
165
|
-
leftSquareBracket: 91,
|
|
166
|
-
// `[`
|
|
167
|
-
backslash: 92,
|
|
168
|
-
// `\`
|
|
169
|
-
rightSquareBracket: 93,
|
|
170
|
-
// `]`
|
|
171
|
-
caret: 94,
|
|
172
|
-
// `^`
|
|
173
|
-
underscore: 95,
|
|
174
|
-
// `_`
|
|
175
|
-
graveAccent: 96,
|
|
176
|
-
// `` ` ``
|
|
177
|
-
lowercaseA: 97,
|
|
178
|
-
// `a`
|
|
179
|
-
lowercaseB: 98,
|
|
180
|
-
// `b`
|
|
181
|
-
lowercaseC: 99,
|
|
182
|
-
// `c`
|
|
183
|
-
lowercaseD: 100,
|
|
184
|
-
// `d`
|
|
185
|
-
lowercaseE: 101,
|
|
186
|
-
// `e`
|
|
187
|
-
lowercaseF: 102,
|
|
188
|
-
// `f`
|
|
189
|
-
lowercaseG: 103,
|
|
190
|
-
// `g`
|
|
191
|
-
lowercaseH: 104,
|
|
192
|
-
// `h`
|
|
193
|
-
lowercaseI: 105,
|
|
194
|
-
// `i`
|
|
195
|
-
lowercaseJ: 106,
|
|
196
|
-
// `j`
|
|
197
|
-
lowercaseK: 107,
|
|
198
|
-
// `k`
|
|
199
|
-
lowercaseL: 108,
|
|
200
|
-
// `l`
|
|
201
|
-
lowercaseM: 109,
|
|
202
|
-
// `m`
|
|
203
|
-
lowercaseN: 110,
|
|
204
|
-
// `n`
|
|
205
|
-
lowercaseO: 111,
|
|
206
|
-
// `o`
|
|
207
|
-
lowercaseP: 112,
|
|
208
|
-
// `p`
|
|
209
|
-
lowercaseQ: 113,
|
|
210
|
-
// `q`
|
|
211
|
-
lowercaseR: 114,
|
|
212
|
-
// `r`
|
|
213
|
-
lowercaseS: 115,
|
|
214
|
-
// `s`
|
|
215
|
-
lowercaseT: 116,
|
|
216
|
-
// `t`
|
|
217
|
-
lowercaseU: 117,
|
|
218
|
-
// `u`
|
|
219
|
-
lowercaseV: 118,
|
|
220
|
-
// `v`
|
|
221
|
-
lowercaseW: 119,
|
|
222
|
-
// `w`
|
|
223
|
-
lowercaseX: 120,
|
|
224
|
-
// `x`
|
|
225
|
-
lowercaseY: 121,
|
|
226
|
-
// `y`
|
|
227
|
-
lowercaseZ: 122,
|
|
228
|
-
// `z`
|
|
229
|
-
leftCurlyBrace: 123,
|
|
230
|
-
// `{`
|
|
231
|
-
verticalBar: 124,
|
|
232
|
-
// `|`
|
|
233
|
-
rightCurlyBrace: 125,
|
|
234
|
-
// `}`
|
|
235
|
-
tilde: 126,
|
|
236
|
-
// `~`
|
|
237
|
-
del: 127,
|
|
238
|
-
// Unicode Specials block.
|
|
239
|
-
byteOrderMarker: 65279,
|
|
240
|
-
// Unicode Specials block.
|
|
241
|
-
replacementCharacter: 65533
|
|
242
|
-
// `�`
|
|
243
|
-
}
|
|
244
|
-
);
|
|
245
|
-
|
|
246
|
-
// ../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js
|
|
247
|
-
var asciiAlpha = regexCheck(/[A-Za-z]/);
|
|
248
|
-
var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/);
|
|
249
|
-
var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/);
|
|
250
|
-
var asciiDigit = regexCheck(/\d/);
|
|
251
|
-
var asciiHexDigit = regexCheck(/[\dA-Fa-f]/);
|
|
252
|
-
var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);
|
|
253
|
-
function markdownLineEnding(code) {
|
|
254
|
-
return code !== null && code < -2;
|
|
255
|
-
}
|
|
256
|
-
var unicodePunctuation = regexCheck(new RegExp("\\p{P}|\\p{S}", "u"));
|
|
257
|
-
var unicodeWhitespace = regexCheck(/\s/);
|
|
258
|
-
function regexCheck(regex) {
|
|
259
|
-
return check;
|
|
260
|
-
function check(code) {
|
|
261
|
-
return code !== null && code > -1 && regex.test(String.fromCharCode(code));
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// ../micromark-extension-dl-list/src/constants.js
|
|
266
|
-
var TAB_SIZE = 4;
|
|
267
|
-
var MAX_PREFIX_COLS = 4;
|
|
268
|
-
|
|
269
|
-
// ../micromark-extension-dl-list/src/util.js
|
|
270
|
-
function isEof(code) {
|
|
271
|
-
return code === codes.eof;
|
|
272
|
-
}
|
|
273
|
-
function isIndent(code) {
|
|
274
|
-
return code === codes.space || code === codes.ht || code === codes.virtualSpace || code === codes.horizontalTab;
|
|
275
|
-
}
|
|
276
|
-
function consumeSafe(effects, code) {
|
|
277
|
-
if (typeof code !== "number") return;
|
|
278
|
-
effects.consume(code);
|
|
279
|
-
}
|
|
280
|
-
function advanceColumn(col, code) {
|
|
281
|
-
if (code === codes.ht || code === codes.horizontalTab) {
|
|
282
|
-
const r = col % TAB_SIZE;
|
|
283
|
-
return col + (r === 0 ? TAB_SIZE : TAB_SIZE - r);
|
|
284
|
-
}
|
|
285
|
-
return col + 1;
|
|
286
|
-
}
|
|
287
|
-
function consumeLineEndingSafe(effects, code) {
|
|
288
|
-
if (!markdownLineEnding(code)) return;
|
|
289
|
-
effects.enter("dlLineEnding");
|
|
290
|
-
effects.consume(code);
|
|
291
|
-
effects.exit("dlLineEnding");
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// ../micromark-extension-dl-list/src/lookahead.js
|
|
295
|
-
function checkPrefixFactory() {
|
|
296
|
-
return {
|
|
297
|
-
tokenize(effects2, ok2, nok2) {
|
|
298
|
-
let col = 0;
|
|
299
|
-
return start2;
|
|
300
|
-
function start2(code) {
|
|
301
|
-
if (isEof(code)) return nok2(code);
|
|
302
|
-
if (code === codes.colon) return ok2(code);
|
|
303
|
-
if (isIndent(code) && col < MAX_PREFIX_COLS) {
|
|
304
|
-
col = advanceColumn(col, code);
|
|
305
|
-
consumeSafe(effects2, code);
|
|
306
|
-
if (col > MAX_PREFIX_COLS) return nok2(code);
|
|
307
|
-
return start2;
|
|
308
|
-
}
|
|
309
|
-
return nok2(code);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
function checkAfterEolContinueFactory() {
|
|
315
|
-
return {
|
|
316
|
-
tokenize(effects2, ok2, nok2) {
|
|
317
|
-
let opened = false;
|
|
318
|
-
return start2;
|
|
319
|
-
function start2(code) {
|
|
320
|
-
if (isEof(code)) return ok2(code);
|
|
321
|
-
if (!markdownLineEnding(code)) return nok2(code);
|
|
322
|
-
effects2.enter("dlCheck");
|
|
323
|
-
opened = true;
|
|
324
|
-
effects2.consume(code);
|
|
325
|
-
return head;
|
|
326
|
-
}
|
|
327
|
-
function head(code) {
|
|
328
|
-
if (isEof(code)) return endOk(code);
|
|
329
|
-
if (markdownLineEnding(code)) return endNok(code);
|
|
330
|
-
if (code === codes.colon) return endOk(code);
|
|
331
|
-
if (isIndent(code)) return endOk(code);
|
|
332
|
-
return endNok(code);
|
|
333
|
-
}
|
|
334
|
-
function endOk(code) {
|
|
335
|
-
if (opened) {
|
|
336
|
-
effects2.exit("dlCheck");
|
|
337
|
-
opened = false;
|
|
338
|
-
}
|
|
339
|
-
return ok2(code);
|
|
340
|
-
}
|
|
341
|
-
function endNok(code) {
|
|
342
|
-
if (opened) {
|
|
343
|
-
effects2.exit("dlCheck");
|
|
344
|
-
opened = false;
|
|
345
|
-
}
|
|
346
|
-
return nok2(code);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
function checkDlStartFactory(baseIndentArg, ddIndentArg) {
|
|
352
|
-
return {
|
|
353
|
-
tokenize(effects2, ok2, nok2) {
|
|
354
|
-
let col = 0;
|
|
355
|
-
let opened = false;
|
|
356
|
-
return start2;
|
|
357
|
-
function start2(code) {
|
|
358
|
-
if (isEof(code)) return nok2(code);
|
|
359
|
-
if (code !== codes.colon) return nok2(code);
|
|
360
|
-
effects2.enter("dlCheck");
|
|
361
|
-
opened = true;
|
|
362
|
-
effects2.consume(code);
|
|
363
|
-
return restOfLine;
|
|
364
|
-
}
|
|
365
|
-
function restOfLine(code) {
|
|
366
|
-
if (isEof(code)) return endOk(code);
|
|
367
|
-
if (markdownLineEnding(code)) {
|
|
368
|
-
effects2.consume(code);
|
|
369
|
-
col = 0;
|
|
370
|
-
return nextLineHead;
|
|
371
|
-
}
|
|
372
|
-
effects2.consume(code);
|
|
373
|
-
return restOfLine;
|
|
374
|
-
}
|
|
375
|
-
function nextLineHead(code) {
|
|
376
|
-
if (isEof(code)) return endOk(code);
|
|
377
|
-
if (markdownLineEnding(code)) return endOk(code);
|
|
378
|
-
if (isIndent(code) && col < 512) {
|
|
379
|
-
col = advanceColumn(col, code);
|
|
380
|
-
effects2.consume(code);
|
|
381
|
-
return nextLineHead;
|
|
382
|
-
}
|
|
383
|
-
if (code === codes.colon && (col === baseIndentArg || col === ddIndentArg)) {
|
|
384
|
-
return endOk(code);
|
|
385
|
-
}
|
|
386
|
-
if (col > baseIndentArg) return endOk(code);
|
|
387
|
-
return endNok(code);
|
|
388
|
-
}
|
|
389
|
-
function endOk(code) {
|
|
390
|
-
if (opened) {
|
|
391
|
-
effects2.exit("dlCheck");
|
|
392
|
-
opened = false;
|
|
393
|
-
}
|
|
394
|
-
return ok2(code);
|
|
395
|
-
}
|
|
396
|
-
function endNok(code) {
|
|
397
|
-
if (opened) {
|
|
398
|
-
effects2.exit("dlCheck");
|
|
399
|
-
opened = false;
|
|
400
|
-
}
|
|
401
|
-
return nok2(code);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
// ../micromark-extension-dl-list/src/tokenize.js
|
|
408
|
-
function tokenizeDlList(effects, ok, nok) {
|
|
409
|
-
let baseIndent = 0;
|
|
410
|
-
let ddIndent = 4;
|
|
411
|
-
let lastField = null;
|
|
412
|
-
let listOpen = false;
|
|
413
|
-
let itemOpen = false;
|
|
414
|
-
let termOpen = false;
|
|
415
|
-
let descOpen = false;
|
|
416
|
-
let termTextOpen = false;
|
|
417
|
-
const closeTermTextIfOpen = () => {
|
|
418
|
-
if (termTextOpen) {
|
|
419
|
-
effects.exit("dlTermText");
|
|
420
|
-
termTextOpen = false;
|
|
421
|
-
}
|
|
422
|
-
};
|
|
423
|
-
const closeTermIfOpen = () => {
|
|
424
|
-
closeTermTextIfOpen();
|
|
425
|
-
if (termOpen) {
|
|
426
|
-
effects.exit("dlTerm");
|
|
427
|
-
termOpen = false;
|
|
428
|
-
}
|
|
429
|
-
};
|
|
430
|
-
const closeDescIfOpen = () => {
|
|
431
|
-
if (descOpen) {
|
|
432
|
-
effects.exit("dlDesc");
|
|
433
|
-
descOpen = false;
|
|
434
|
-
}
|
|
435
|
-
};
|
|
436
|
-
const closeFieldIfOpen = () => {
|
|
437
|
-
closeDescIfOpen();
|
|
438
|
-
closeTermIfOpen();
|
|
439
|
-
lastField = null;
|
|
440
|
-
};
|
|
441
|
-
const closeItemIfOpen = () => {
|
|
442
|
-
closeFieldIfOpen();
|
|
443
|
-
if (itemOpen) {
|
|
444
|
-
effects.exit("dlItem");
|
|
445
|
-
itemOpen = false;
|
|
446
|
-
}
|
|
447
|
-
};
|
|
448
|
-
const closeAll = () => {
|
|
449
|
-
closeItemIfOpen();
|
|
450
|
-
if (listOpen) {
|
|
451
|
-
effects.exit("dlList");
|
|
452
|
-
listOpen = false;
|
|
453
|
-
}
|
|
454
|
-
};
|
|
455
|
-
const start = (code) => {
|
|
456
|
-
baseIndent = 0;
|
|
457
|
-
ddIndent = 4;
|
|
458
|
-
lastField = null;
|
|
459
|
-
listOpen = false;
|
|
460
|
-
itemOpen = false;
|
|
461
|
-
termOpen = false;
|
|
462
|
-
descOpen = false;
|
|
463
|
-
termTextOpen = false;
|
|
464
|
-
return prefix(code, 0);
|
|
465
|
-
};
|
|
466
|
-
const prefix = (code, col) => {
|
|
467
|
-
if (isEof(code)) return nok(code);
|
|
468
|
-
if (code === codes.colon) {
|
|
469
|
-
let onOk2 = function() {
|
|
470
|
-
baseIndent = col;
|
|
471
|
-
ddIndent = baseIndent + 4;
|
|
472
|
-
effects.enter("dlList");
|
|
473
|
-
listOpen = true;
|
|
474
|
-
return termMarker(code);
|
|
475
|
-
};
|
|
476
|
-
var onOk = onOk2;
|
|
477
|
-
if (col > 3) return nok(code);
|
|
478
|
-
return effects.check(
|
|
479
|
-
checkDlStartFactory(col, col + 4),
|
|
480
|
-
onOk2,
|
|
481
|
-
nok
|
|
482
|
-
)(code);
|
|
483
|
-
}
|
|
484
|
-
if (isIndent(code) && col < MAX_PREFIX_COLS) {
|
|
485
|
-
let onOk2 = function() {
|
|
486
|
-
return prefixConsume(code, 0);
|
|
487
|
-
};
|
|
488
|
-
var onOk = onOk2;
|
|
489
|
-
return effects.check(checkPrefixFactory(), onOk2, nok)(code);
|
|
490
|
-
}
|
|
491
|
-
return nok(code);
|
|
492
|
-
};
|
|
493
|
-
const prefixConsume = (code, col) => {
|
|
494
|
-
if (isEof(code)) return nok(code);
|
|
495
|
-
if (code === codes.colon) {
|
|
496
|
-
let onOk2 = function() {
|
|
497
|
-
baseIndent = col;
|
|
498
|
-
ddIndent = baseIndent + 4;
|
|
499
|
-
effects.enter("dlList");
|
|
500
|
-
listOpen = true;
|
|
501
|
-
return termMarker(code);
|
|
502
|
-
};
|
|
503
|
-
var onOk = onOk2;
|
|
504
|
-
if (col > 3) return nok(code);
|
|
505
|
-
return effects.check(
|
|
506
|
-
checkDlStartFactory(col, col + 4),
|
|
507
|
-
onOk2,
|
|
508
|
-
nok
|
|
509
|
-
)(code);
|
|
510
|
-
}
|
|
511
|
-
if (isIndent(code) && col < MAX_PREFIX_COLS) {
|
|
512
|
-
effects.enter("dlIndent");
|
|
513
|
-
consumeSafe(effects, code);
|
|
514
|
-
effects.exit("dlIndent");
|
|
515
|
-
const nextCol = advanceColumn(col, code);
|
|
516
|
-
if (nextCol > MAX_PREFIX_COLS) return nok(code);
|
|
517
|
-
return (c) => prefixConsume(c, nextCol);
|
|
518
|
-
}
|
|
519
|
-
return nok(code);
|
|
520
|
-
};
|
|
521
|
-
const termMarker = (code) => {
|
|
522
|
-
if (isEof(code) || code !== codes.colon) return nok(code);
|
|
523
|
-
closeItemIfOpen();
|
|
524
|
-
effects.enter("dlItem");
|
|
525
|
-
itemOpen = true;
|
|
526
|
-
effects.enter("dlTerm");
|
|
527
|
-
termOpen = true;
|
|
528
|
-
lastField = "term";
|
|
529
|
-
consumeSafe(effects, code);
|
|
530
|
-
return afterMarkerToTerm;
|
|
531
|
-
};
|
|
532
|
-
const afterMarkerToTerm = (code) => {
|
|
533
|
-
if (isEof(code) || markdownLineEnding(code)) return afterEol(code);
|
|
534
|
-
if (isIndent(code)) {
|
|
535
|
-
effects.enter("dlMarkerSpace");
|
|
536
|
-
consumeSafe(effects, code);
|
|
537
|
-
effects.exit("dlMarkerSpace");
|
|
538
|
-
return termTextStart;
|
|
539
|
-
}
|
|
540
|
-
return termTextStart(code);
|
|
541
|
-
};
|
|
542
|
-
const termTextStart = (code) => {
|
|
543
|
-
effects.enter("dlTermText");
|
|
544
|
-
termTextOpen = true;
|
|
545
|
-
return termText(code);
|
|
546
|
-
};
|
|
547
|
-
const termText = (code) => {
|
|
548
|
-
if (isEof(code) || markdownLineEnding(code)) {
|
|
549
|
-
effects.exit("dlTermText");
|
|
550
|
-
termTextOpen = false;
|
|
551
|
-
return afterEol(code);
|
|
552
|
-
}
|
|
553
|
-
consumeSafe(effects, code);
|
|
554
|
-
return termText;
|
|
555
|
-
};
|
|
556
|
-
const afterEol = (code) => {
|
|
557
|
-
if (isEof(code)) {
|
|
558
|
-
closeAll();
|
|
559
|
-
return ok(code);
|
|
560
|
-
}
|
|
561
|
-
if (!markdownLineEnding(code)) return nok(code);
|
|
562
|
-
return effects.check(
|
|
563
|
-
checkAfterEolContinueFactory(),
|
|
564
|
-
onContinue,
|
|
565
|
-
onStop
|
|
566
|
-
)(code);
|
|
567
|
-
function onContinue() {
|
|
568
|
-
consumeLineEndingSafe(effects, code);
|
|
569
|
-
return lineStart;
|
|
570
|
-
}
|
|
571
|
-
function onStop() {
|
|
572
|
-
closeAll();
|
|
573
|
-
return ok(code);
|
|
574
|
-
}
|
|
575
|
-
};
|
|
576
|
-
const lineStart = (code) => {
|
|
577
|
-
if (isEof(code) || markdownLineEnding(code)) {
|
|
578
|
-
closeAll();
|
|
579
|
-
return ok(code);
|
|
580
|
-
}
|
|
581
|
-
if (code === codes.colon) {
|
|
582
|
-
closeFieldIfOpen();
|
|
583
|
-
return termMarker(code);
|
|
584
|
-
}
|
|
585
|
-
if (isIndent(code)) return scanIndent(code, 0);
|
|
586
|
-
closeAll();
|
|
587
|
-
return ok(code);
|
|
588
|
-
};
|
|
589
|
-
const scanIndent = (code, col) => {
|
|
590
|
-
if (isEof(code)) {
|
|
591
|
-
closeAll();
|
|
592
|
-
return ok(code);
|
|
593
|
-
}
|
|
594
|
-
if (isIndent(code) && col < 512) {
|
|
595
|
-
effects.enter("dlIndent");
|
|
596
|
-
consumeSafe(effects, code);
|
|
597
|
-
effects.exit("dlIndent");
|
|
598
|
-
const nextCol = advanceColumn(col, code);
|
|
599
|
-
return (c) => scanIndent(c, nextCol);
|
|
600
|
-
}
|
|
601
|
-
if (col >= ddIndent && code === codes.colon) {
|
|
602
|
-
closeTermIfOpen();
|
|
603
|
-
return descMarker(code);
|
|
604
|
-
}
|
|
605
|
-
if (col === baseIndent && code === codes.colon) {
|
|
606
|
-
closeFieldIfOpen();
|
|
607
|
-
return termMarker(code);
|
|
608
|
-
}
|
|
609
|
-
if (col > baseIndent) {
|
|
610
|
-
if (!termOpen && !descOpen) {
|
|
611
|
-
closeAll();
|
|
612
|
-
return ok(code);
|
|
613
|
-
}
|
|
614
|
-
return continuationLine(code);
|
|
615
|
-
}
|
|
616
|
-
closeAll();
|
|
617
|
-
return ok(code);
|
|
618
|
-
};
|
|
619
|
-
const descMarker = (code) => {
|
|
620
|
-
if (isEof(code) || code !== codes.colon) return nok(code);
|
|
621
|
-
closeDescIfOpen();
|
|
622
|
-
effects.enter("dlDesc");
|
|
623
|
-
descOpen = true;
|
|
624
|
-
lastField = "desc";
|
|
625
|
-
consumeSafe(effects, code);
|
|
626
|
-
return afterMarkerToDesc;
|
|
627
|
-
};
|
|
628
|
-
const afterMarkerToDesc = (code) => {
|
|
629
|
-
if (isEof(code)) return afterEol(code);
|
|
630
|
-
if (markdownLineEnding(code)) {
|
|
631
|
-
const t2 = effects.enter("dlDescContainer");
|
|
632
|
-
t2._dlIndent = ddIndent;
|
|
633
|
-
return descContainerContent(code);
|
|
634
|
-
}
|
|
635
|
-
if (isIndent(code)) {
|
|
636
|
-
effects.enter("dlMarkerSpace");
|
|
637
|
-
consumeSafe(effects, code);
|
|
638
|
-
effects.exit("dlMarkerSpace");
|
|
639
|
-
return afterMarkerToDesc;
|
|
640
|
-
}
|
|
641
|
-
const t = effects.enter("dlDescContainer");
|
|
642
|
-
t._dlIndent = ddIndent;
|
|
643
|
-
return descContainerContent(code);
|
|
644
|
-
};
|
|
645
|
-
const descContainerContent = (code) => {
|
|
646
|
-
if (isEof(code)) {
|
|
647
|
-
effects.exit("dlDescContainer");
|
|
648
|
-
closeAll();
|
|
649
|
-
return ok(code);
|
|
650
|
-
}
|
|
651
|
-
if (markdownLineEnding(code)) {
|
|
652
|
-
let onContinue2 = function() {
|
|
653
|
-
consumeLineEndingSafe(effects, code);
|
|
654
|
-
return descContainerLineStart;
|
|
655
|
-
}, onStop2 = function() {
|
|
656
|
-
effects.exit("dlDescContainer");
|
|
657
|
-
closeAll();
|
|
658
|
-
return ok(code);
|
|
659
|
-
};
|
|
660
|
-
var onContinue = onContinue2, onStop = onStop2;
|
|
661
|
-
return effects.check(
|
|
662
|
-
checkAfterEolContinueFactory(),
|
|
663
|
-
onContinue2,
|
|
664
|
-
onStop2
|
|
665
|
-
)(code);
|
|
666
|
-
}
|
|
667
|
-
consumeSafe(effects, code);
|
|
668
|
-
return descContainerContent;
|
|
669
|
-
};
|
|
670
|
-
const descContainerLineStart = (code) => {
|
|
671
|
-
if (isEof(code)) {
|
|
672
|
-
effects.exit("dlDescContainer");
|
|
673
|
-
closeAll();
|
|
674
|
-
return ok(code);
|
|
675
|
-
}
|
|
676
|
-
if (markdownLineEnding(code)) {
|
|
677
|
-
consumeLineEndingSafe(effects, code);
|
|
678
|
-
return descContainerLineStart;
|
|
679
|
-
}
|
|
680
|
-
if (code === codes.colon) {
|
|
681
|
-
effects.exit("dlDescContainer");
|
|
682
|
-
closeDescIfOpen();
|
|
683
|
-
return lineStart(code);
|
|
684
|
-
}
|
|
685
|
-
if (isIndent(code)) return descContainerScanIndent(code, 0);
|
|
686
|
-
effects.exit("dlDescContainer");
|
|
687
|
-
closeAll();
|
|
688
|
-
return ok(code);
|
|
689
|
-
};
|
|
690
|
-
const descContainerScanIndent = (code, col) => {
|
|
691
|
-
if (isEof(code)) {
|
|
692
|
-
effects.exit("dlDescContainer");
|
|
693
|
-
closeAll();
|
|
694
|
-
return ok(code);
|
|
695
|
-
}
|
|
696
|
-
if (isIndent(code) && col < 512) {
|
|
697
|
-
consumeSafe(effects, code);
|
|
698
|
-
const nextCol = advanceColumn(col, code);
|
|
699
|
-
return (c) => descContainerScanIndent(c, nextCol);
|
|
700
|
-
}
|
|
701
|
-
if (col === baseIndent && code === codes.colon) {
|
|
702
|
-
effects.exit("dlDescContainer");
|
|
703
|
-
closeDescIfOpen();
|
|
704
|
-
return termMarker(code);
|
|
705
|
-
}
|
|
706
|
-
if (col === ddIndent && code === codes.colon) {
|
|
707
|
-
effects.exit("dlDescContainer");
|
|
708
|
-
closeDescIfOpen();
|
|
709
|
-
return descMarker(code);
|
|
710
|
-
}
|
|
711
|
-
return descContainerContent(code);
|
|
712
|
-
};
|
|
713
|
-
const continuationLine = (code) => {
|
|
714
|
-
effects.enter("dlHardBreak");
|
|
715
|
-
effects.exit("dlHardBreak");
|
|
716
|
-
if (lastField === "term" && termOpen) {
|
|
717
|
-
effects.enter("dlTermText");
|
|
718
|
-
termTextOpen = true;
|
|
719
|
-
return contTextAsTerm(code);
|
|
720
|
-
}
|
|
721
|
-
if (lastField === "desc" && descOpen) {
|
|
722
|
-
const t = effects.enter("dlDescContainer");
|
|
723
|
-
t._dlIndent = ddIndent;
|
|
724
|
-
return descContainerContent(code);
|
|
725
|
-
}
|
|
726
|
-
closeAll();
|
|
727
|
-
return ok(code);
|
|
728
|
-
};
|
|
729
|
-
const contTextAsTerm = (code) => {
|
|
730
|
-
if (isEof(code) || markdownLineEnding(code)) {
|
|
731
|
-
effects.exit("dlTermText");
|
|
732
|
-
termTextOpen = false;
|
|
733
|
-
return afterEol(code);
|
|
734
|
-
}
|
|
735
|
-
consumeSafe(effects, code);
|
|
736
|
-
return contTextAsTerm;
|
|
737
|
-
};
|
|
738
|
-
return start;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
// ../micromark-extension-dl-list/src/syntax.js
|
|
742
|
-
function dlList() {
|
|
743
|
-
const construct = { name: "dlList", tokenize: tokenizeDlList, concrete: true };
|
|
744
|
-
return {
|
|
745
|
-
flow: {
|
|
746
|
-
[codes.colon]: construct,
|
|
747
|
-
[codes.space]: construct,
|
|
748
|
-
[codes.ht]: construct
|
|
749
|
-
}
|
|
750
|
-
};
|
|
751
|
-
}
|
|
752
|
-
|
|
753
1
|
// src/index.ts
|
|
2
|
+
import { dlList } from "micromark-extension-dl-list";
|
|
754
3
|
import { dlListFromMarkdown, dlListToMarkdown } from "mdast-util-dl-list";
|
|
755
4
|
function remarkDlList() {
|
|
756
5
|
const data = this.data();
|
|
757
6
|
const micromarkExtensions = data.micromarkExtensions ?? (data.micromarkExtensions = []);
|
|
758
7
|
const fromMarkdownExtensions = data.fromMarkdownExtensions ?? (data.fromMarkdownExtensions = []);
|
|
759
8
|
const toMarkdownExtensions = data.toMarkdownExtensions ?? (data.toMarkdownExtensions = []);
|
|
9
|
+
const inheritedMicromark = micromarkExtensions.slice();
|
|
10
|
+
const inheritedFromMd = fromMarkdownExtensions.slice();
|
|
760
11
|
micromarkExtensions.push(dlList());
|
|
761
|
-
fromMarkdownExtensions.push(
|
|
12
|
+
fromMarkdownExtensions.push(
|
|
13
|
+
dlListFromMarkdown({
|
|
14
|
+
extensions: inheritedMicromark,
|
|
15
|
+
mdastExtensions: inheritedFromMd
|
|
16
|
+
})
|
|
17
|
+
);
|
|
762
18
|
toMarkdownExtensions.push(dlListToMarkdown());
|
|
763
19
|
}
|
|
764
20
|
export {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js","../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js","../../micromark-extension-dl-list/src/constants.js","../../micromark-extension-dl-list/src/util.js","../../micromark-extension-dl-list/src/lookahead.js","../../micromark-extension-dl-list/src/tokenize.js","../../micromark-extension-dl-list/src/syntax.js","../src/index.ts"],"sourcesContent":["/**\n * Character codes.\n *\n * This module is compiled away!\n *\n * micromark works based on character codes.\n * This module contains constants for the ASCII block and the replacement\n * character.\n * A couple of them are handled in a special way, such as the line endings\n * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal\n * tab) and its expansion based on what column it’s at (virtual space),\n * and the end-of-file (eof) character.\n * As values are preprocessed before handling them, the actual characters LF,\n * CR, HT, and NUL (which is present as the replacement character), are\n * guaranteed to not exist.\n *\n * Unicode basic latin block.\n */\nexport const codes = /** @type {const} */ ({\n carriageReturn: -5,\n lineFeed: -4,\n carriageReturnLineFeed: -3,\n horizontalTab: -2,\n virtualSpace: -1,\n eof: null,\n nul: 0,\n soh: 1,\n stx: 2,\n etx: 3,\n eot: 4,\n enq: 5,\n ack: 6,\n bel: 7,\n bs: 8,\n ht: 9, // `\\t`\n lf: 10, // `\\n`\n vt: 11, // `\\v`\n ff: 12, // `\\f`\n cr: 13, // `\\r`\n so: 14,\n si: 15,\n dle: 16,\n dc1: 17,\n dc2: 18,\n dc3: 19,\n dc4: 20,\n nak: 21,\n syn: 22,\n etb: 23,\n can: 24,\n em: 25,\n sub: 26,\n esc: 27,\n fs: 28,\n gs: 29,\n rs: 30,\n us: 31,\n space: 32,\n exclamationMark: 33, // `!`\n quotationMark: 34, // `\"`\n numberSign: 35, // `#`\n dollarSign: 36, // `$`\n percentSign: 37, // `%`\n ampersand: 38, // `&`\n apostrophe: 39, // `'`\n leftParenthesis: 40, // `(`\n rightParenthesis: 41, // `)`\n asterisk: 42, // `*`\n plusSign: 43, // `+`\n comma: 44, // `,`\n dash: 45, // `-`\n dot: 46, // `.`\n slash: 47, // `/`\n digit0: 48, // `0`\n digit1: 49, // `1`\n digit2: 50, // `2`\n digit3: 51, // `3`\n digit4: 52, // `4`\n digit5: 53, // `5`\n digit6: 54, // `6`\n digit7: 55, // `7`\n digit8: 56, // `8`\n digit9: 57, // `9`\n colon: 58, // `:`\n semicolon: 59, // `;`\n lessThan: 60, // `<`\n equalsTo: 61, // `=`\n greaterThan: 62, // `>`\n questionMark: 63, // `?`\n atSign: 64, // `@`\n uppercaseA: 65, // `A`\n uppercaseB: 66, // `B`\n uppercaseC: 67, // `C`\n uppercaseD: 68, // `D`\n uppercaseE: 69, // `E`\n uppercaseF: 70, // `F`\n uppercaseG: 71, // `G`\n uppercaseH: 72, // `H`\n uppercaseI: 73, // `I`\n uppercaseJ: 74, // `J`\n uppercaseK: 75, // `K`\n uppercaseL: 76, // `L`\n uppercaseM: 77, // `M`\n uppercaseN: 78, // `N`\n uppercaseO: 79, // `O`\n uppercaseP: 80, // `P`\n uppercaseQ: 81, // `Q`\n uppercaseR: 82, // `R`\n uppercaseS: 83, // `S`\n uppercaseT: 84, // `T`\n uppercaseU: 85, // `U`\n uppercaseV: 86, // `V`\n uppercaseW: 87, // `W`\n uppercaseX: 88, // `X`\n uppercaseY: 89, // `Y`\n uppercaseZ: 90, // `Z`\n leftSquareBracket: 91, // `[`\n backslash: 92, // `\\`\n rightSquareBracket: 93, // `]`\n caret: 94, // `^`\n underscore: 95, // `_`\n graveAccent: 96, // `` ` ``\n lowercaseA: 97, // `a`\n lowercaseB: 98, // `b`\n lowercaseC: 99, // `c`\n lowercaseD: 100, // `d`\n lowercaseE: 101, // `e`\n lowercaseF: 102, // `f`\n lowercaseG: 103, // `g`\n lowercaseH: 104, // `h`\n lowercaseI: 105, // `i`\n lowercaseJ: 106, // `j`\n lowercaseK: 107, // `k`\n lowercaseL: 108, // `l`\n lowercaseM: 109, // `m`\n lowercaseN: 110, // `n`\n lowercaseO: 111, // `o`\n lowercaseP: 112, // `p`\n lowercaseQ: 113, // `q`\n lowercaseR: 114, // `r`\n lowercaseS: 115, // `s`\n lowercaseT: 116, // `t`\n lowercaseU: 117, // `u`\n lowercaseV: 118, // `v`\n lowercaseW: 119, // `w`\n lowercaseX: 120, // `x`\n lowercaseY: 121, // `y`\n lowercaseZ: 122, // `z`\n leftCurlyBrace: 123, // `{`\n verticalBar: 124, // `|`\n rightCurlyBrace: 125, // `}`\n tilde: 126, // `~`\n del: 127,\n // Unicode Specials block.\n byteOrderMarker: 65_279,\n // Unicode Specials block.\n replacementCharacter: 65_533 // `�`\n})\n","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","/**\n * Tab width used for column calculation.\n * CommonMark / micromark treat a tab stop as 4 columns in indentation contexts.\n *\n * @type {number}\n */\nexport const TAB_SIZE = 4\n\n/**\n * Upper bound (exclusive) of indentation columns allowed before `:` to start a dl-list construct.\n *\n * - CommonMark list rule allows up to 3 columns of indentation (0–3).\n * - We keep it as an exclusive upper bound so callers can write `col < MAX_PREFIX_COLS`.\n *\n * @type {number}\n */\nexport const MAX_PREFIX_COLS = 4\n","import { markdownLineEnding } from 'micromark-util-character'\nimport { codes } from 'micromark-util-symbol'\nimport { TAB_SIZE } from './constants.js'\n\n/**\n * @param {number|null} code\n * @returns {boolean}\n */\nexport function isEof(code) {\n return code === codes.eof\n}\n\n/**\n * True for indentation codes that micromark uses at line starts.\n *\n * @param {number|null} code\n * @returns {boolean}\n */\nexport function isIndent(code) {\n return (\n code === codes.space ||\n code === codes.ht ||\n code === codes.virtualSpace ||\n code === codes.horizontalTab\n )\n}\n\n/**\n * Consume a code only when it represents a number.\n * (micromark uses negative “virtual” codes too; those are still numbers and are valid to consume.)\n *\n * @param {import('micromark-util-types').Effects} effects\n * @param {number|null} code\n * @returns {void}\n */\nexport function consumeSafe(effects, code) {\n if (typeof code !== 'number') return\n effects.consume(code)\n}\n\n/**\n * Advance column count by one character, respecting TAB_SIZE.\n *\n * @param {number} col\n * @param {number|null} code\n * @returns {number}\n */\nexport function advanceColumn(col, code) {\n if (code === codes.ht || code === codes.horizontalTab) {\n const r = col % TAB_SIZE\n return col + (r === 0 ? TAB_SIZE : TAB_SIZE - r)\n }\n return col + 1\n}\n\n/**\n * Consume a line ending as a token (`dlLineEnding`) so downstream can reason about it.\n *\n * NOTE:\n * - Do not call this in the \"blank line ends dl-list\" path.\n * In that case, the EOL must remain for CommonMark to see the blank-line boundary.\n *\n * @param {import('micromark-util-types').Effects} effects\n * @param {number|null} code\n * @returns {void}\n */\nexport function consumeLineEndingSafe(effects, code) {\n if (!markdownLineEnding(code)) return\n effects.enter('dlLineEnding')\n effects.consume(code)\n effects.exit('dlLineEnding')\n}\n","import { markdownLineEnding } from 'micromark-util-character'\nimport { codes } from 'micromark-util-symbol'\nimport { MAX_PREFIX_COLS } from './constants.js'\nimport { isEof, isIndent, consumeSafe, advanceColumn } from './util.js'\n\n/**\n * Lookahead tokenizers used by dl-list to confirm start / continuation without consuming input.\n *\n * These are separated from tokenize.js to keep the main tokenizer readable.\n */\n\n/**\n * Check whether the current line can start dl-list after optional indentation (<= 3 cols).\n * Succeeds when it can reach ':' before exceeding MAX_PREFIX_COLS.\n */\nexport function checkPrefixFactory() {\n return {\n tokenize(effects2, ok2, nok2) {\n let col = 0\n return start2\n\n /** @type {import('micromark-util-types').State} */\n function start2(code) {\n if (isEof(code)) return nok2(code)\n if (code === codes.colon) return ok2(code)\n\n if (isIndent(code) && col < MAX_PREFIX_COLS) {\n col = advanceColumn(col, code)\n consumeSafe(effects2, code)\n if (col > MAX_PREFIX_COLS) return nok2(code)\n return start2\n }\n\n return nok2(code)\n }\n }\n }\n}\n\n/**\n * Check whether the dl-list should continue after a line ending.\n *\n * - ok when next line begins with ':' or indentation\n * - stop on blank line (do not consume blank-line EOL in the main tokenizer)\n */\nexport function checkAfterEolContinueFactory() {\n return {\n tokenize(effects2, ok2, nok2) {\n let opened = false\n return start2\n\n function start2(code) {\n if (isEof(code)) return ok2(code)\n if (!markdownLineEnding(code)) return nok2(code)\n\n effects2.enter('dlCheck')\n opened = true\n\n // consume the line ending so we can inspect the next line head\n effects2.consume(code)\n return head\n }\n\n function head(code) {\n if (isEof(code)) return endOk(code)\n if (markdownLineEnding(code)) return endNok(code) // blank line -> stop\n if (code === codes.colon) return endOk(code)\n if (isIndent(code)) return endOk(code)\n return endNok(code)\n }\n\n function endOk(code) {\n if (opened) {\n effects2.exit('dlCheck')\n opened = false\n }\n return ok2(code)\n }\n\n function endNok(code) {\n if (opened) {\n effects2.exit('dlCheck')\n opened = false\n }\n return nok2(code)\n }\n }\n }\n}\n\n/**\n * Check whether a ':' at baseIndent can start a dl-list.\n *\n * Requires:\n * - the ':' line itself exists\n * - next line is EOF or blank, OR\n * - next line begins with ':' at baseIndent or ddIndent, OR\n * - next line is indented beyond baseIndent (continuation for dt)\n */\nexport function checkDlStartFactory(baseIndentArg, ddIndentArg) {\n return {\n tokenize(effects2, ok2, nok2) {\n let col = 0\n let opened = false\n return start2\n\n function start2(code) {\n if (isEof(code)) return nok2(code)\n if (code !== codes.colon) return nok2(code)\n\n effects2.enter('dlCheck')\n opened = true\n\n effects2.consume(code) // ':'\n return restOfLine\n }\n\n function restOfLine(code) {\n if (isEof(code)) return endOk(code)\n\n if (markdownLineEnding(code)) {\n effects2.consume(code) // consume EOL to inspect next line head\n col = 0\n return nextLineHead\n }\n\n effects2.consume(code)\n return restOfLine\n }\n\n function nextLineHead(code) {\n if (isEof(code)) return endOk(code) // allow EOF\n if (markdownLineEnding(code)) return endOk(code) // allow blank line\n\n if (isIndent(code) && col < 512) {\n col = advanceColumn(col, code)\n effects2.consume(code)\n return nextLineHead\n }\n\n // next line must start a field: \":\" at baseIndent or ddIndent\n if (code === codes.colon && (col === baseIndentArg || col === ddIndentArg)) {\n return endOk(code)\n }\n\n // allow an indented, non-blank continuation line for the term\n if (col > baseIndentArg) return endOk(code)\n\n return endNok(code)\n }\n\n function endOk(code) {\n if (opened) {\n effects2.exit('dlCheck')\n opened = false\n }\n return ok2(code)\n }\n\n function endNok(code) {\n if (opened) {\n effects2.exit('dlCheck')\n opened = false\n }\n return nok2(code)\n }\n }\n }\n}\n","import { markdownLineEnding } from 'micromark-util-character'\nimport { codes } from 'micromark-util-symbol'\nimport { MAX_PREFIX_COLS } from './constants.js'\nimport {\n isEof,\n isIndent,\n consumeSafe,\n advanceColumn,\n consumeLineEndingSafe\n} from './util.js'\nimport {\n checkPrefixFactory,\n checkAfterEolContinueFactory,\n checkDlStartFactory\n} from './lookahead.js'\n\n/**\n * Tokenize a dl-list at flow level.\n *\n * @internal\n * @this {import('micromark-util-types').TokenizeContext}\n * @param {import('micromark-util-types').Effects} effects\n * @param {import('micromark-util-types').State} ok\n * @param {import('micromark-util-types').State} nok\n * @returns {import('micromark-util-types').State}\n */\nexport function tokenizeDlList(effects, ok, nok) {\n /** @type {number} */\n let baseIndent = 0\n\n /** @type {number} */\n let ddIndent = 4\n\n /** @type {'term'|'desc'|null} */\n let lastField = null\n\n /** @type {boolean} */\n let listOpen = false\n /** @type {boolean} */\n let itemOpen = false\n /** @type {boolean} */\n let termOpen = false\n /** @type {boolean} */\n let descOpen = false\n /** @type {boolean} */\n let termTextOpen = false\n\n const closeTermTextIfOpen = () => {\n if (termTextOpen) {\n effects.exit('dlTermText')\n termTextOpen = false\n }\n }\n\n const closeTermIfOpen = () => {\n closeTermTextIfOpen()\n if (termOpen) {\n effects.exit('dlTerm')\n termOpen = false\n }\n }\n\n const closeDescIfOpen = () => {\n if (descOpen) {\n effects.exit('dlDesc')\n descOpen = false\n }\n }\n\n const closeFieldIfOpen = () => {\n closeDescIfOpen()\n closeTermIfOpen()\n lastField = null\n }\n\n const closeItemIfOpen = () => {\n closeFieldIfOpen()\n if (itemOpen) {\n effects.exit('dlItem')\n itemOpen = false\n }\n }\n\n const closeAll = () => {\n closeItemIfOpen()\n if (listOpen) {\n effects.exit('dlList')\n listOpen = false\n }\n }\n\n const start = (code) => {\n baseIndent = 0\n ddIndent = 4\n lastField = null\n listOpen = false\n itemOpen = false\n termOpen = false\n descOpen = false\n termTextOpen = false\n return prefix(code, 0)\n }\n\n const prefix = (code, col) => {\n if (isEof(code)) return nok(code)\n\n if (code === codes.colon) {\n if (col > 3) return nok(code)\n\n return effects.check(\n checkDlStartFactory(col, col + 4),\n onOk,\n nok\n )(code)\n\n function onOk() {\n baseIndent = col\n ddIndent = baseIndent + 4\n effects.enter('dlList')\n listOpen = true\n return termMarker(code)\n }\n }\n\n if (isIndent(code) && col < MAX_PREFIX_COLS) {\n return effects.check(checkPrefixFactory(), onOk, nok)(code)\n function onOk() {\n return prefixConsume(code, 0)\n }\n }\n\n return nok(code)\n }\n\n const prefixConsume = (code, col) => {\n if (isEof(code)) return nok(code)\n\n if (code === codes.colon) {\n if (col > 3) return nok(code)\n\n return effects.check(\n checkDlStartFactory(col, col + 4),\n onOk,\n nok\n )(code)\n\n function onOk() {\n baseIndent = col\n ddIndent = baseIndent + 4\n effects.enter('dlList')\n listOpen = true\n return termMarker(code)\n }\n }\n\n if (isIndent(code) && col < MAX_PREFIX_COLS) {\n effects.enter('dlIndent')\n consumeSafe(effects, code)\n effects.exit('dlIndent')\n\n const nextCol = advanceColumn(col, code)\n if (nextCol > MAX_PREFIX_COLS) return nok(code)\n\n return (c) => prefixConsume(c, nextCol)\n }\n\n return nok(code)\n }\n\n const termMarker = (code) => {\n if (isEof(code) || code !== codes.colon) return nok(code)\n\n closeItemIfOpen()\n\n effects.enter('dlItem')\n itemOpen = true\n\n effects.enter('dlTerm')\n termOpen = true\n lastField = 'term'\n\n consumeSafe(effects, code) // ':'\n return afterMarkerToTerm\n }\n\n const afterMarkerToTerm = (code) => {\n if (isEof(code) || markdownLineEnding(code)) return afterEol(code)\n\n if (isIndent(code)) {\n effects.enter('dlMarkerSpace')\n consumeSafe(effects, code)\n effects.exit('dlMarkerSpace')\n return termTextStart\n }\n\n return termTextStart(code)\n }\n\n const termTextStart = (code) => {\n effects.enter('dlTermText')\n termTextOpen = true\n return termText(code)\n }\n\n const termText = (code) => {\n if (isEof(code) || markdownLineEnding(code)) {\n effects.exit('dlTermText')\n termTextOpen = false\n return afterEol(code)\n }\n consumeSafe(effects, code)\n return termText\n }\n\n const afterEol = (code) => {\n if (isEof(code)) {\n closeAll()\n return ok(code)\n }\n if (!markdownLineEnding(code)) return nok(code)\n\n // Decide whether to continue *before* claiming the line ending.\n // If we stop here, leave the line ending to the parent tokenizer.\n return effects.check(\n checkAfterEolContinueFactory(),\n onContinue,\n onStop\n )(code)\n\n function onContinue() {\n consumeLineEndingSafe(effects, code)\n return lineStart\n }\n\n function onStop() {\n closeAll()\n return ok(code)\n }\n }\n\n const lineStart = (code) => {\n if (isEof(code) || markdownLineEnding(code)) {\n closeAll()\n return ok(code)\n }\n\n if (code === codes.colon) {\n closeFieldIfOpen()\n return termMarker(code)\n }\n\n if (isIndent(code)) return scanIndent(code, 0)\n\n closeAll()\n return ok(code)\n }\n\n const scanIndent = (code, col) => {\n if (isEof(code)) {\n closeAll()\n return ok(code)\n }\n\n if (isIndent(code) && col < 512) {\n effects.enter('dlIndent')\n consumeSafe(effects, code)\n effects.exit('dlIndent')\n\n const nextCol = advanceColumn(col, code)\n return (c) => scanIndent(c, nextCol)\n }\n\n if (col >= ddIndent && code === codes.colon) {\n closeTermIfOpen()\n return descMarker(code)\n }\n\n if (col === baseIndent && code === codes.colon) {\n closeFieldIfOpen()\n return termMarker(code)\n }\n\n if (col > baseIndent) {\n if (!termOpen && !descOpen) {\n closeAll()\n return ok(code)\n }\n return continuationLine(code)\n }\n\n closeAll()\n return ok(code)\n }\n\n const descMarker = (code) => {\n if (isEof(code) || code !== codes.colon) return nok(code)\n\n closeDescIfOpen()\n\n effects.enter('dlDesc')\n descOpen = true\n lastField = 'desc'\n\n consumeSafe(effects, code) // ':'\n return afterMarkerToDesc\n }\n\n const afterMarkerToDesc = (code) => {\n if (isEof(code)) return afterEol(code)\n\n // IMPORTANT:\n // Even if the dd marker line ends immediately, open a container so\n // subsequent indented lines become part of this dd.\n // (This removes the need for dlDescText.)\n if (markdownLineEnding(code)) {\n const t = effects.enter('dlDescContainer')\n // @ts-ignore\n t._dlIndent = ddIndent\n return descContainerContent(code)\n }\n\n // dd マーカー直後のスペースはコンテナに入れない(見た目調整用)\n if (isIndent(code)) {\n effects.enter('dlMarkerSpace')\n consumeSafe(effects, code)\n effects.exit('dlMarkerSpace')\n return afterMarkerToDesc\n }\n\n const t = effects.enter('dlDescContainer')\n // html.js が参照する deindent 量(columns)\n // @ts-ignore\n t._dlIndent = ddIndent\n\n return descContainerContent(code)\n }\n\n const descContainerContent = (code) => {\n if (isEof(code)) {\n effects.exit('dlDescContainer')\n closeAll()\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n checkAfterEolContinueFactory(),\n onContinue,\n onStop\n )(code)\n\n function onContinue() {\n consumeLineEndingSafe(effects, code)\n return descContainerLineStart\n }\n\n function onStop() {\n effects.exit('dlDescContainer')\n closeAll()\n return ok(code)\n }\n }\n\n consumeSafe(effects, code)\n return descContainerContent\n }\n\n const descContainerLineStart = (code) => {\n if (isEof(code)) {\n effects.exit('dlDescContainer')\n closeAll()\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n // 空行はコンテナに含める(段落分離に必要)\n consumeLineEndingSafe(effects, code)\n return descContainerLineStart\n }\n\n // 次行が \":\" で始まる (= 次の term / 同階層) 場合、dd コンテナを閉じて tokenizer 側で処理\n if (code === codes.colon) {\n effects.exit('dlDescContainer')\n closeDescIfOpen()\n return lineStart(code)\n }\n\n if (isIndent(code)) return descContainerScanIndent(code, 0)\n\n // インデント無しは dl-list 終了\n effects.exit('dlDescContainer')\n closeAll()\n return ok(code)\n }\n\n const descContainerScanIndent = (code, col) => {\n if (isEof(code)) {\n effects.exit('dlDescContainer')\n closeAll()\n return ok(code)\n }\n\n if (isIndent(code) && col < 512) {\n // コンテナなので indent もそのまま入れる\n consumeSafe(effects, code)\n const nextCol = advanceColumn(col, code)\n return (c) => descContainerScanIndent(c, nextCol)\n }\n\n if (col === baseIndent && code === codes.colon) {\n effects.exit('dlDescContainer')\n closeDescIfOpen()\n return termMarker(code)\n }\n\n // 深いインデントの \":\" は dd 本文(入れ子 dl 等)の可能性があるので閉じない\n if (col === ddIndent && code === codes.colon) {\n effects.exit('dlDescContainer')\n closeDescIfOpen()\n return descMarker(code)\n }\n\n // それ以外は dd 本文継続(この行の残りを食う)\n return descContainerContent(code)\n }\n\n const continuationLine = (code) => {\n effects.enter('dlHardBreak')\n effects.exit('dlHardBreak')\n\n if (lastField === 'term' && termOpen) {\n effects.enter('dlTermText')\n termTextOpen = true\n return contTextAsTerm(code)\n }\n\n if (lastField === 'desc' && descOpen) {\n // Fallback safety:\n // If we ever reach here with an open dd but no container,\n // treat continuation as dd container content (no dlDescText).\n const t = effects.enter('dlDescContainer')\n // @ts-ignore\n t._dlIndent = ddIndent\n return descContainerContent(code)\n }\n\n closeAll()\n return ok(code)\n }\n\n const contTextAsTerm = (code) => {\n if (isEof(code) || markdownLineEnding(code)) {\n effects.exit('dlTermText')\n termTextOpen = false\n return afterEol(code)\n }\n consumeSafe(effects, code)\n return contTextAsTerm\n }\n\n return start\n}\n","import { codes } from 'micromark-util-symbol'\nimport { tokenizeDlList } from './tokenize.js'\n\n/**\n * Micromark extension for colon-based definition lists.\n *\n * Syntax (flow):\n * - A line whose first non-indentation character within 0–3 columns is `:` starts a dl-list.\n * - The first `:` line is a term (`dt`).\n * - Subsequent lines indented by 4+ columns and starting with `:` are descriptions (`dd`).\n * - Continuation lines (indented, without `:`) are appended to the last opened dt/dd.\n *\n * Design constraints:\n * - Do not consume indentation unless dl-list is confirmed by lookahead.\n * - Do not consume blank-line EOL that terminates the list.\n *\n * @returns {import('micromark-util-types').Extension}\n */\nexport function dlList() {\n /** @type {import('micromark-util-types').Construct} */\n const construct = { name: 'dlList', tokenize: tokenizeDlList, concrete: true }\n\n /** @type {import('micromark-util-types').Extension} */\n return {\n flow: {\n [codes.colon]: construct,\n [codes.space]: construct,\n [codes.ht]: construct\n }\n }\n}\n","import { dlList } from \"../../micromark-extension-dl-list/src\";\nimport { dlListFromMarkdown, dlListToMarkdown } from \"mdast-util-dl-list\";\n\nimport type { Processor } from \"unified\";\nimport type { Extension as MicromarkExtension } from \"micromark-util-types\";\nimport type { Extension as FromMarkdownExtension } from \"mdast-util-from-markdown\";\nimport type { Options as ToMarkdownOptions } from \"mdast-util-to-markdown\";\n\ntype ToMarkdownExtension =\n NonNullable<ToMarkdownOptions[\"extensions\"]>[number];\n\n/**\n * remark plugin that enables colon-based definition lists using `<dl>`, `<dt>`, and `<dd>`.\n *\n * This plugin wires:\n * - micromark extension (syntax)\n * - mdast from-markdown extension (AST generation)\n * - mdast to-markdown extension (serialization)\n *\n * What this plugin intentionally does NOT do:\n * - It does NOT install `remark-rehype`.\n * - It does NOT register hast handlers automatically.\n *\n * If you need HTML output, combine this plugin with:\n * - `remark-rehype`\n * - `hast-util-dl-list`\n *\n * Example:\n *\n * ```ts\n * unified()\n * .use(remarkParse)\n * .use(remarkDlList)\n * .use(remarkRehype, { handlers: dlListHandlers() })\n * ```\n */\nexport function remarkDlList(this: Processor): void {\n const data = this.data() as Record<string, unknown>;\n\n const micromarkExtensions =\n (data.micromarkExtensions as MicromarkExtension[] | undefined) ??\n ((data.micromarkExtensions = []) as MicromarkExtension[]);\n\n const fromMarkdownExtensions =\n (data.fromMarkdownExtensions as FromMarkdownExtension[] | undefined) ??\n ((data.fromMarkdownExtensions = []) as FromMarkdownExtension[]);\n\n const toMarkdownExtensions =\n (data.toMarkdownExtensions as ToMarkdownExtension[] | undefined) ??\n ((data.toMarkdownExtensions = []) as ToMarkdownExtension[]);\n\n micromarkExtensions.push(dlList());\n fromMarkdownExtensions.push(dlListFromMarkdown());\n toMarkdownExtensions.push(dlListToMarkdown());\n}\n"],"mappings":"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","names":["onOk","t","onContinue","onStop"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { dlList } from \"micromark-extension-dl-list\";\nimport { dlListFromMarkdown, dlListToMarkdown } from \"mdast-util-dl-list\";\n\nimport type { Processor } from \"unified\";\nimport type { Extension as MicromarkExtension } from \"micromark-util-types\";\nimport type { Extension as FromMarkdownExtension } from \"mdast-util-from-markdown\";\nimport type { Options as ToMarkdownOptions } from \"mdast-util-to-markdown\";\n\ntype ToMarkdownExtension =\n NonNullable<ToMarkdownOptions[\"extensions\"]>[number];\n\n/**\n * remark plugin that enables colon-based definition lists using `<dl>`, `<dt>`, and `<dd>`.\n *\n * This plugin wires:\n * - micromark extension (syntax)\n * - mdast from-markdown extension (AST generation)\n * - mdast to-markdown extension (serialization)\n *\n * What this plugin intentionally does NOT do:\n * - It does NOT install `remark-rehype`.\n * - It does NOT register hast handlers automatically.\n *\n * If you need HTML output, combine this plugin with:\n * - `remark-rehype`\n * - `hast-util-dl-list`\n *\n * Example:\n *\n * ```ts\n * unified()\n * .use(remarkParse)\n * .use(remarkDlList)\n * .use(remarkRehype, { handlers: dlListHandlers() })\n * ```\n */\nexport function remarkDlList(this: Processor): void {\n const data = this.data() as Record<string, unknown>;\n\n const micromarkExtensions =\n (data.micromarkExtensions as MicromarkExtension[] | undefined) ??\n ((data.micromarkExtensions = []) as MicromarkExtension[]);\n\n const fromMarkdownExtensions =\n (data.fromMarkdownExtensions as FromMarkdownExtension[] | undefined) ??\n ((data.fromMarkdownExtensions = []) as FromMarkdownExtension[]);\n\n const toMarkdownExtensions =\n (data.toMarkdownExtensions as ToMarkdownExtension[] | undefined) ??\n ((data.toMarkdownExtensions = []) as ToMarkdownExtension[]);\n\n // Capture “other” extensions that are already registered at this moment.\n // These will be inherited by dd/dt reparse inside mdast-util-dl-list.\n const inheritedMicromark = micromarkExtensions.slice();\n const inheritedFromMd = fromMarkdownExtensions.slice();\n\n // Register dl-list itself\n micromarkExtensions.push(dlList());\n\n // IMPORTANT: pass inherited extensions to dlListFromMarkdown so dd reparse can see them\n fromMarkdownExtensions.push(\n dlListFromMarkdown({\n extensions: inheritedMicromark as any,\n mdastExtensions: inheritedFromMd as any,\n })\n );\n\n toMarkdownExtensions.push(dlListToMarkdown());\n}"],"mappings":";AAAA,SAAS,cAAc;AACvB,SAAS,oBAAoB,wBAAwB;AAmC9C,SAAS,eAAoC;AAChD,QAAM,OAAO,KAAK,KAAK;AAEvB,QAAM,sBACD,KAAK,wBACJ,KAAK,sBAAsB,CAAC;AAElC,QAAM,yBACD,KAAK,2BACJ,KAAK,yBAAyB,CAAC;AAErC,QAAM,uBACD,KAAK,yBACJ,KAAK,uBAAuB,CAAC;AAInC,QAAM,qBAAqB,oBAAoB,MAAM;AACrD,QAAM,kBAAkB,uBAAuB,MAAM;AAGrD,sBAAoB,KAAK,OAAO,CAAC;AAGjC,yBAAuB;AAAA,IACnB,mBAAmB;AAAA,MACf,YAAY;AAAA,MACZ,iBAAiB;AAAA,IACrB,CAAC;AAAA,EACL;AAEA,uBAAqB,KAAK,iBAAiB,CAAC;AAChD;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remark-dl-list",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "A remark plugin that enables colon-based definition lists by wiring micromark and mdast extensions for <dl>, <dt>, and <dd>.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
"files": [
|
|
26
26
|
"dist/**",
|
|
27
27
|
"README.md",
|
|
28
|
+
"README-ja.md",
|
|
28
29
|
"LICENSE"
|
|
29
30
|
],
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"mdast-util-dl-list": "^0.1.
|
|
32
|
-
"micromark-extension-dl-list": "^0.1.
|
|
32
|
+
"mdast-util-dl-list": "^0.1.2",
|
|
33
|
+
"micromark-extension-dl-list": "^0.1.2"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
35
36
|
"unified": "^11.0.5"
|