@peaceroad/markdown-it-numbering-ul-regarded-as-ol 0.1.0 → 0.1.1
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.md +90 -43
- package/____Markdown].txt +24 -0
- package/____Untitled-1.txt +214 -0
- package/index.js +68 -10
- package/package.json +1 -1
- package/test/examples-spantitle.txt +201 -0
- package/test/test.js +58 -21
package/README.md
CHANGED
|
@@ -12,6 +12,17 @@ Input Markdown:
|
|
|
12
12
|
|
|
13
13
|
Output HTML:
|
|
14
14
|
|
|
15
|
+
```
|
|
16
|
+
<ol type="i" class="ol-lower-roman">
|
|
17
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> a</li>
|
|
18
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> b</li>
|
|
19
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> c</li>
|
|
20
|
+
</ol>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Using Option `describeListNumber: false` and `unsetListRole: false` output HTML:
|
|
24
|
+
|
|
25
|
+
|
|
15
26
|
```html
|
|
16
27
|
<ol type="i" class="ol-lower-roman">
|
|
17
28
|
<li aria-label="i">a</li>
|
|
@@ -25,7 +36,23 @@ Notice. HTML output is still unstable.
|
|
|
25
36
|
## Install
|
|
26
37
|
|
|
27
38
|
```
|
|
28
|
-
npm i @
|
|
39
|
+
npm i @peaceroad/markdown-it-numbering-ul-regarded-as-ol
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Option
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
const mdNumUl = require('@peaceroad/markdown-it-numbering-ul-regarded-as-ol');
|
|
46
|
+
md.use(mdNumUl);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
When using options:
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
md.use(mdNumUl, {
|
|
53
|
+
describeListNumber: false,
|
|
54
|
+
unsetListRole: false,
|
|
55
|
+
});
|
|
29
56
|
```
|
|
30
57
|
|
|
31
58
|
## Example
|
|
@@ -71,9 +98,9 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
71
98
|
- iii. c
|
|
72
99
|
[HTML]
|
|
73
100
|
<ol type="i" class="ol-lower-roman">
|
|
74
|
-
<li
|
|
75
|
-
<li
|
|
76
|
-
<li
|
|
101
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> a</li>
|
|
102
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> b</li>
|
|
103
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> c</li>
|
|
77
104
|
</ol>
|
|
78
105
|
|
|
79
106
|
[Markdown]
|
|
@@ -92,10 +119,10 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
92
119
|
- ❷ b
|
|
93
120
|
- ❸ c
|
|
94
121
|
[HTML]
|
|
95
|
-
<ol
|
|
96
|
-
<li
|
|
97
|
-
<li
|
|
98
|
-
<li
|
|
122
|
+
<ol class="ol-filled-circled-decimal">
|
|
123
|
+
<li><span class="li-num">❶</span> a</li>
|
|
124
|
+
<li><span class="li-num">❷</span> b</li>
|
|
125
|
+
<li><span class="li-num">❸</span> c</li>
|
|
99
126
|
</ol>
|
|
100
127
|
|
|
101
128
|
[Markdown]
|
|
@@ -114,10 +141,10 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
114
141
|
- ③ b
|
|
115
142
|
- ④ c
|
|
116
143
|
[HTML]
|
|
117
|
-
<ol start="2"
|
|
118
|
-
<li
|
|
119
|
-
<li
|
|
120
|
-
<li
|
|
144
|
+
<ol start="2" class="ol-circled-decimal">
|
|
145
|
+
<li><span class="li-num">②</span> a</li>
|
|
146
|
+
<li><span class="li-num">③</span> b</li>
|
|
147
|
+
<li><span class="li-num">④</span> c</li>
|
|
121
148
|
</ol>
|
|
122
149
|
|
|
123
150
|
[Markdown]
|
|
@@ -125,10 +152,10 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
125
152
|
- (3). b
|
|
126
153
|
- (4). c
|
|
127
154
|
[HTML]
|
|
128
|
-
<ol start="2"
|
|
129
|
-
<li
|
|
130
|
-
<li
|
|
131
|
-
<li
|
|
155
|
+
<ol start="2" class="ol-decimal-with-round-round">
|
|
156
|
+
<li><span class="li-num">(2)</span> a</li>
|
|
157
|
+
<li><span class="li-num">(3)</span> b</li>
|
|
158
|
+
<li><span class="li-num">(4)</span> c</li>
|
|
132
159
|
</ol>
|
|
133
160
|
|
|
134
161
|
[Markdown]
|
|
@@ -136,10 +163,10 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
136
163
|
- 3). b
|
|
137
164
|
- 4). c
|
|
138
165
|
[HTML]
|
|
139
|
-
<ol start="2"
|
|
140
|
-
<li
|
|
141
|
-
<li
|
|
142
|
-
<li
|
|
166
|
+
<ol start="2" class="ol-decimal-with-none-round">
|
|
167
|
+
<li><span class="li-num">2)</span> a</li>
|
|
168
|
+
<li><span class="li-num">3)</span> b</li>
|
|
169
|
+
<li><span class="li-num">4)</span> c</li>
|
|
143
170
|
</ol>
|
|
144
171
|
|
|
145
172
|
|
|
@@ -155,32 +182,52 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
155
182
|
<li>項目1</li>
|
|
156
183
|
<li>項目2
|
|
157
184
|
<ol type="i" class="ol-lower-roman">
|
|
158
|
-
<li
|
|
159
|
-
<li
|
|
160
|
-
<li
|
|
185
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目2-i</li>
|
|
186
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目2-ii</li>
|
|
187
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目2-iii</li>
|
|
161
188
|
</ol>
|
|
162
189
|
</li>
|
|
163
190
|
<li>項目3</li>
|
|
164
191
|
</ol>
|
|
165
192
|
|
|
166
193
|
[Markdown]
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
194
|
+
- i. 項目i
|
|
195
|
+
- ii. 項目ii
|
|
196
|
+
1. 項目ii-1
|
|
197
|
+
2. 項目ii-2
|
|
198
|
+
3. 項目ii-3
|
|
199
|
+
- iii. 項目iii
|
|
200
|
+
[HTML]
|
|
201
|
+
<ol type="i" class="ol-lower-roman">
|
|
202
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目i</li>
|
|
203
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目ii
|
|
204
|
+
<ol class="ol-decimal">
|
|
205
|
+
<li>項目ii-1</li>
|
|
206
|
+
<li>項目ii-2</li>
|
|
207
|
+
<li>項目ii-3</li>
|
|
208
|
+
</ol>
|
|
209
|
+
</li>
|
|
210
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目iii</li>
|
|
211
|
+
</ol>
|
|
212
|
+
|
|
213
|
+
[Markdown]
|
|
214
|
+
- ❸ 項目❸
|
|
215
|
+
- ❹ 項目❹
|
|
216
|
+
- ② 項目❹-②
|
|
217
|
+
- ③ 項目❹-③
|
|
218
|
+
- ④ 項目❹-④
|
|
219
|
+
- ❺ 項目❺
|
|
173
220
|
[HTML]
|
|
174
|
-
<ol start="3"
|
|
175
|
-
<li
|
|
176
|
-
<li
|
|
177
|
-
<ol start="2"
|
|
178
|
-
<li
|
|
179
|
-
<li
|
|
180
|
-
<li
|
|
221
|
+
<ol start="3" class="ol-filled-circled-decimal">
|
|
222
|
+
<li><span class="li-num">❸</span> 項目❸</li>
|
|
223
|
+
<li><span class="li-num">❹</span> 項目❹
|
|
224
|
+
<ol start="2" class="ol-circled-decimal">
|
|
225
|
+
<li><span class="li-num">②</span> 項目❹-②</li>
|
|
226
|
+
<li><span class="li-num">③</span> 項目❹-③</li>
|
|
227
|
+
<li><span class="li-num">④</span> 項目❹-④</li>
|
|
181
228
|
</ol>
|
|
182
229
|
</li>
|
|
183
|
-
<li
|
|
230
|
+
<li><span class="li-num">❺</span> 項目❺</li>
|
|
184
231
|
</ol>
|
|
185
232
|
|
|
186
233
|
[Markdown]
|
|
@@ -198,15 +245,15 @@ npm i @peacroad/markdown-it-numbering-ul-regarded-as-ol
|
|
|
198
245
|
<li>項目1</li>
|
|
199
246
|
<li>項目2
|
|
200
247
|
<ol type="i" class="ol-lower-roman">
|
|
201
|
-
<li
|
|
202
|
-
<li
|
|
248
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目2-i</li>
|
|
249
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目2-ii
|
|
203
250
|
<ol type="a" class="ol-lower-latin">
|
|
204
|
-
<li
|
|
205
|
-
<li
|
|
206
|
-
<li
|
|
251
|
+
<li><span class="li-num">a<span class="li-num-joint">.</span></span> 項目2-ii-a</li>
|
|
252
|
+
<li><span class="li-num">b<span class="li-num-joint">.</span></span> 項目2-ii-b</li>
|
|
253
|
+
<li><span class="li-num">c<span class="li-num-joint">.</span></span> 項目2-ii-c</li>
|
|
207
254
|
</ol>
|
|
208
255
|
</li>
|
|
209
|
-
<li
|
|
256
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目2-iii</li>
|
|
210
257
|
</ol>
|
|
211
258
|
</li>
|
|
212
259
|
<li>項目3</li>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[Markdown]
|
|
2
|
+
- 1. a
|
|
3
|
+
- 2. b
|
|
4
|
+
- 3. c
|
|
5
|
+
[HTML]
|
|
6
|
+
<ol class="ol-decimal">
|
|
7
|
+
<li>a</li>
|
|
8
|
+
<li>b</li>
|
|
9
|
+
<li>c</li>
|
|
10
|
+
</ol>
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
[Markdown]
|
|
14
|
+
- 1. a
|
|
15
|
+
- 10. bb
|
|
16
|
+
- 3. c
|
|
17
|
+
[HTML]
|
|
18
|
+
<ol class="ol-decimal">
|
|
19
|
+
<li>a
|
|
20
|
+
<ol start="10" class="ol-decimal">
|
|
21
|
+
<li>bb</li>
|
|
22
|
+
</ol></li>
|
|
23
|
+
<li>c</li>
|
|
24
|
+
</ol>
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
function check (state, list, boons, bi) {
|
|
2
|
+
let bStart = boons[bi][0];
|
|
3
|
+
let bEnd = boons[bi][1];
|
|
4
|
+
console.log('check:: list.flows.length: ' + list.flows.length + ' , bStart: ' + bStart + ', type: ' + list.flows[bStart].type);
|
|
5
|
+
let bpos = list.flows[bStart].pos;
|
|
6
|
+
list.flows[bStart].type = 'numbering_' + list.flows[bStart].type;
|
|
7
|
+
list.flows[bStart].psTypes = list.flows[bStart+2].psTypes;
|
|
8
|
+
let startValue = -1;
|
|
9
|
+
let liCount = 0;
|
|
10
|
+
let sbn = []; // shifted bStarts number;
|
|
11
|
+
let i = bStart + 1;
|
|
12
|
+
let dlfn = 0; // deleted list.flow number
|
|
13
|
+
let dstn = 0; // deleteed state.tokens number
|
|
14
|
+
let isCheckedBullet = true;
|
|
15
|
+
let hasPrevBullet = false;
|
|
16
|
+
|
|
17
|
+
while (i < list.flows.length) {
|
|
18
|
+
console.log('---------------------------------');
|
|
19
|
+
console.log('i: ' + i + ', dstn: ' + dstn + ', dlfn: ' + dlfn + ', pos: ' + list.flows[i].pos + ', type: ' + list.flows[i].type + ', level(i): ' + list.flows[i].level + ', level(bStart): ' + list.flows[bStart].level);
|
|
20
|
+
|
|
21
|
+
list.flows[i].pos -= dstn;
|
|
22
|
+
let lfpos = list.flows[i].pos;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
let j = i;
|
|
26
|
+
while (j < boons.length) {
|
|
27
|
+
if (boons[j].start < i) {
|
|
28
|
+
sbn[j].start = dlfn;
|
|
29
|
+
}
|
|
30
|
+
if (boons[j].end < i) {
|
|
31
|
+
sbn[j].end = dlfn;
|
|
32
|
+
}
|
|
33
|
+
j++;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let bEndNow = bEnd - dlfn;
|
|
37
|
+
|
|
38
|
+
console.log('now bEndNow: ' + bEndNow);
|
|
39
|
+
|
|
40
|
+
if (list.flows[i].type === 'bullet_list_close' && list.flows[i].level === list.flows[bpos].level && isCheckedBullet) {
|
|
41
|
+
list.flows[i].type = 'numbering_' + list.flows[i].type;
|
|
42
|
+
// Delete </ol></li> of last list.
|
|
43
|
+
//console.log('Delete0: ' + state.tokens[lfpos - 2].type + ', ' + state.tokens[lfpos - 1].type);
|
|
44
|
+
console.log('Delete0: ' + state.tokens[lfpos - 2].type);
|
|
45
|
+
console.log(state.tokens[lfpos - 1].type);
|
|
46
|
+
state.tokens.splice(lfpos - 2, 2);
|
|
47
|
+
list.flows.splice(i - 1, 1);
|
|
48
|
+
dlfn += 1;
|
|
49
|
+
dstn += 2;
|
|
50
|
+
lfpos -= 2;
|
|
51
|
+
i--;
|
|
52
|
+
list.flows[i].pos -= 2;
|
|
53
|
+
state.tokens[lfpos].tag = 'ol';
|
|
54
|
+
console.log('lfpos: ' + lfpos + ', list.flows[i].type: ' + list.flows[i].type);
|
|
55
|
+
isCheckedBullet = false;
|
|
56
|
+
console.log(list.flows);
|
|
57
|
+
console.log('(i: ' + i + ', list.flows.length: ' + list.flows.length + ')');
|
|
58
|
+
|
|
59
|
+
i++;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if(list.flows[i].type === 'bullet_list_open' && list.flows[i].level === list.flows[bStart].level + 1 && list.flows[i].isBulletOneOrdered) {
|
|
64
|
+
liCount++;
|
|
65
|
+
hasPrevBullet = true;
|
|
66
|
+
console.log('bullet open process:: type: ' + list.flows[i].type + ', pos: ' + lfpos + ', dlfn: ' + dlfn + ', dstn: ' + dstn);
|
|
67
|
+
console.log('Delete1: ' + list.flows[i-1].type + ', pos: ' + lfpos + ', dstn: ' + dstn + ', dlfn: ' + dlfn );
|
|
68
|
+
list.flows.splice(i - 1, 1);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (list.flows[i].type === 'list_item_open' && isCheckedBullet) {
|
|
73
|
+
console.log('hasPrevBullet: ' + hasPrevBullet);
|
|
74
|
+
console.log('list.flows[i].level: ' + list.flows[i].level + ', list.flows[bpos].level: ' + list.flows[bpos].level);
|
|
75
|
+
if (list.flows[i].level === list.flows[bStart].level) {
|
|
76
|
+
liCount++;
|
|
77
|
+
|
|
78
|
+
console.log('Delete1: list:flows[i].type: ' + list.flows[i].type + ', list.flows[i+1].type: ' + list.flows[i+1].type);
|
|
79
|
+
console.log('Delete2: state.tokens[lfpos].type: ' + state.tokens[lfpos].type + ', state.tokens[lfpos + 1].type: ' + state.tokens[lfpos + 1].type);
|
|
80
|
+
state.tokens.splice(lfpos, 2);
|
|
81
|
+
list.flows.splice(i, 2);
|
|
82
|
+
dstn += 2;
|
|
83
|
+
dlfn += 2;
|
|
84
|
+
|
|
85
|
+
if (liCount > 1) {
|
|
86
|
+
//lfpos -= dstn;
|
|
87
|
+
if (!hasPrevBullet) {
|
|
88
|
+
console.log('Delete3: state.tokens[lfpos - 2].type: ' + state.tokens[lfpos - 2].type + ', state.tokens[lfpos - 1].type: ' + state.tokens[lfpos - 1].type);
|
|
89
|
+
console.log('Delete4: ' + list.flows[i-1].type);
|
|
90
|
+
|
|
91
|
+
state.tokens.splice(lfpos - 2, 2);
|
|
92
|
+
list.flows.splice(i-1, 1);
|
|
93
|
+
console.log('list.flows[i-1].pos: ' + list.flows[i-1].pos + ', list.flows[i-1].type: ' + list.flows[i-1].type);
|
|
94
|
+
dstn += 2;
|
|
95
|
+
dlfn += 1;
|
|
96
|
+
i--;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (hasPrevBullet) {
|
|
101
|
+
hasPrevBullet = false;
|
|
102
|
+
}
|
|
103
|
+
continue;
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
/// list.level;
|
|
107
|
+
if (list.flows[i].level === list.flows[bStart].level + 1) {
|
|
108
|
+
console.log('list process:: type: ' + list.flows[i].type);
|
|
109
|
+
|
|
110
|
+
list.flows[i].level -= 1;
|
|
111
|
+
console.log('Change list.flows[i].level: ' + list.flows[i].level);
|
|
112
|
+
|
|
113
|
+
//console.log('Moved: lfpos: ' + lfpos + ', state.tokens[lfpos].type: ' + state.tokens[lfpos].type);
|
|
114
|
+
|
|
115
|
+
i++;
|
|
116
|
+
continue;
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log('normal process:: type: ' + list.flows[i].type);
|
|
121
|
+
//console.log('B: state.tokens[lfpos].type: ' + state.tokens[lfpos].type);
|
|
122
|
+
if (i <= bEndNow) {
|
|
123
|
+
// list.flows[i].level -= 1;
|
|
124
|
+
}
|
|
125
|
+
console.log('Moved: lfpos: ' + lfpos +', state.tokens[lfpos].type: ' + state.tokens[lfpos].type);
|
|
126
|
+
i++;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
console.log('list.flows.length: ' + list.flows.length + ', state.tokens.length: ' + state.tokens.length);
|
|
130
|
+
//console.log(list.flows);
|
|
131
|
+
|
|
132
|
+
let k = bi + 1;
|
|
133
|
+
while (k < boons.length) {
|
|
134
|
+
if (sbn[k] !== undefined) {
|
|
135
|
+
boons[k].start -= sbn[k];
|
|
136
|
+
boons[k].end -= sbn[k];
|
|
137
|
+
}
|
|
138
|
+
k++;
|
|
139
|
+
}
|
|
140
|
+
return boons;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
let bi = 0;
|
|
145
|
+
let boons = [];
|
|
146
|
+
while (bi < boonsStarts.length) {
|
|
147
|
+
let j = boonsStarts[bi] + 1;
|
|
148
|
+
while (j < list.flows.length) {
|
|
149
|
+
if(list.flows[j].type === 'bullet_list_close' && list.flows[j].level === list.flows[boonsStarts[bi]].level) {
|
|
150
|
+
list.flows[j].isBulletOneOrderedClose = true;
|
|
151
|
+
boons.push([boonsStarts[bi], j]);
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
j++;
|
|
155
|
+
}
|
|
156
|
+
bi++;
|
|
157
|
+
}
|
|
158
|
+
console.log('list.flows.length: ' + list.flows.length + ', boons: ' + boons);
|
|
159
|
+
|
|
160
|
+
bi = 0;
|
|
161
|
+
while (bi < boons.length) {
|
|
162
|
+
console.log('boon: ' + boons[bi] + ' =======================================');
|
|
163
|
+
console.log(list.flows);
|
|
164
|
+
boons = check(state, list, boons, bi);
|
|
165
|
+
console.log('changed boons: ' + boons);
|
|
166
|
+
bi++;
|
|
167
|
+
}
|
|
168
|
+
console.log('--------------');
|
|
169
|
+
console.log(list.flows);
|
|
170
|
+
console.log('--------------');
|
|
171
|
+
//console.log(state.tokens);
|
|
172
|
+
console.log('--------------');
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function modifyBulletOneOrderedList (state, n, list) {
|
|
177
|
+
let lfn = 0;
|
|
178
|
+
let boonsStarts = [];
|
|
179
|
+
while (lfn < list.flows.length) {
|
|
180
|
+
if (lfn + 3 > list.flows.length) {break;}
|
|
181
|
+
if (!/numbering_ordered_list_open/.test(list.flows[lfn].type)) {
|
|
182
|
+
lfn++; continue;
|
|
183
|
+
}
|
|
184
|
+
//Set bullet one ordederd flag.
|
|
185
|
+
let isOneOrdered = false;
|
|
186
|
+
if (/numbering_ordered_list_close/.test(list.flows[lfn+2].type)) {
|
|
187
|
+
isOneOrdered = true;
|
|
188
|
+
}
|
|
189
|
+
let isParentBullet = false;
|
|
190
|
+
let k = lfn;
|
|
191
|
+
while (k > -1) {
|
|
192
|
+
if (list.flows[k].type === 'bullet_list_open' && list.flows[k].level === list.flows[lfn].level - 1) {
|
|
193
|
+
isParentBullet = true;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
k--;
|
|
197
|
+
}
|
|
198
|
+
console.log('lfn: ' + lfn + ', k: ' + k + ', isOneOrdered: ' + isOneOrdered + ', isParentBullet: ' + isParentBullet);
|
|
199
|
+
if (!isParentBullet) {lfn++; continue;}
|
|
200
|
+
|
|
201
|
+
if (isOneOrdered) {
|
|
202
|
+
list.flows[k].isBulletOneOrdered = true;
|
|
203
|
+
if (!boonsStarts.includes(k)) {
|
|
204
|
+
boonsStarts.push(k);
|
|
205
|
+
}
|
|
206
|
+
} else {
|
|
207
|
+
list.flows[k].isBulletOneOrdered = false;
|
|
208
|
+
let bk = boonsStarts.indexOf(k);
|
|
209
|
+
if (bk) {
|
|
210
|
+
boonsStarts.splice(bk, 1);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
lfn++;
|
|
214
|
+
}
|
package/index.js
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
|
|
4
4
|
|
|
5
5
|
let opt = {
|
|
6
|
-
noChangeBulletOneOrderedList: true,
|
|
6
|
+
//noChangeBulletOneOrderedList: true,
|
|
7
|
+
unsetListRole: true,
|
|
8
|
+
describeListNumber: true,
|
|
9
|
+
desdribelistNumterTitle: false,
|
|
10
|
+
listNumberTitleLang: 'en',
|
|
7
11
|
};
|
|
8
12
|
if (option !== undefined) {
|
|
9
13
|
for (let o in option) {
|
|
@@ -286,7 +290,7 @@ module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
|
|
|
286
290
|
}
|
|
287
291
|
|
|
288
292
|
//Set role attribute.
|
|
289
|
-
if(!isOlTypes && isParent[1] === 'numbering_bullet') {
|
|
293
|
+
if(!opt.unsetListRole && !isOlTypes && isParent[1] === 'numbering_bullet') {
|
|
290
294
|
state.tokens[cn].attrSet('role', 'list');
|
|
291
295
|
}
|
|
292
296
|
|
|
@@ -356,15 +360,69 @@ module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
|
|
|
356
360
|
}
|
|
357
361
|
}
|
|
358
362
|
|
|
359
|
-
//Set
|
|
360
|
-
if (
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
363
|
+
//Set list num span element.
|
|
364
|
+
if (opt.describeListNumber) {
|
|
365
|
+
|
|
366
|
+
const listNumBeforeToken = new state.Token('text', '', 0);
|
|
367
|
+
const listNumOpenToken = new state.Token('span_open', 'span', 1);
|
|
368
|
+
listNumOpenToken.attrSet('class', 'li-num');
|
|
369
|
+
if (opt.desdribelistNumterTitle) {
|
|
370
|
+
let listNumTitle = 'List number';
|
|
371
|
+
if (opt.listNumberTitleLang === 'ja') {
|
|
372
|
+
listNumTitle = '項目番号';
|
|
373
|
+
}
|
|
374
|
+
listNumOpenToken.attrSet('title', listNumTitle);
|
|
375
|
+
}
|
|
376
|
+
const listNumContToken = new state.Token('text', '', 0);
|
|
377
|
+
listNumContToken.content = list.flows[lfn].symbols[sn].cont;
|
|
378
|
+
const listNumCloseToken = new state.Token('span_close', 'span', -1);
|
|
379
|
+
|
|
380
|
+
const listNumJointOpenToken = new state.Token('span_open', 'span', 1);
|
|
381
|
+
listNumJointOpenToken.attrSet('class', 'li-num-joint');
|
|
382
|
+
const listNumJointContToken = new state.Token('text', '', 0);
|
|
383
|
+
listNumJointContToken.content = list.flows[lfn].symbols[sn].joint.replace(/ *$/, '');
|
|
384
|
+
const listNumJointCloseToken = new state.Token('span_close', 'span', -1);
|
|
385
|
+
|
|
386
|
+
//console.log(state.tokens[cn+2]);
|
|
387
|
+
if (list.flows[lfn].symbols[sn].typesNum !== 0 || list.flows[lfn].symbols[sn].prefix || list.flows[lfn].symbols[sn].suffix) {
|
|
388
|
+
//console.log(state.tokens[cn+2]);
|
|
389
|
+
|
|
390
|
+
state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, ' ');
|
|
391
|
+
state.tokens[cn+2].children[0].content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, ' ');
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
//console.log(list.flows[lfn].symbols[sn])
|
|
395
|
+
if (/\. */.test(list.flows[lfn].symbols[sn].joint)) {
|
|
396
|
+
if (/\)/.test(list.flows[lfn].symbols[sn].suffix)) {
|
|
397
|
+
state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumCloseToken);
|
|
398
|
+
} else {
|
|
399
|
+
state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumJointOpenToken, listNumJointContToken,listNumJointCloseToken, listNumCloseToken);
|
|
400
|
+
}
|
|
401
|
+
} else {
|
|
402
|
+
state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumCloseToken);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
365
405
|
|
|
366
|
-
|
|
367
|
-
|
|
406
|
+
// console.log('state.tokens[cn+2].content: ' + state.tokens[cn+2].content);
|
|
407
|
+
//state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, '');
|
|
408
|
+
//console.log(list.flows[lfn].symbols[sn]);
|
|
409
|
+
// console.log('state.tokens[cn+2].content: ' + state.tokens[cn+2].content);
|
|
410
|
+
// state.tokens[cn+2].children[0].content = '';//;
|
|
411
|
+
|
|
412
|
+
//const listContToken = new state.Token('text', '', 0);
|
|
413
|
+
//listContToken.content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, '');
|
|
414
|
+
//console.log('check: ' + state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, ''));
|
|
415
|
+
//state.tokens[cn+2].children.splice(0, 0, listContToken);
|
|
416
|
+
|
|
417
|
+
} else {
|
|
418
|
+
//set aria-label attribute and modify content.
|
|
419
|
+
if (list.flows[lfn].symbols[sn].typesNum !== 0 || list.flows[lfn].symbols[sn].prefix || list.flows[lfn].symbols[sn].suffix) {
|
|
420
|
+
state.tokens[cn].attrSet('aria-label', list.flows[lfn].symbols[sn].cont);
|
|
421
|
+
}
|
|
422
|
+
state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, '');
|
|
423
|
+
state.tokens[cn+2].children[0].content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, '');
|
|
424
|
+
|
|
425
|
+
}
|
|
368
426
|
}
|
|
369
427
|
lfn++;
|
|
370
428
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
[Markdown]
|
|
2
|
+
1. a
|
|
3
|
+
2. b
|
|
4
|
+
3. c
|
|
5
|
+
[HTML]
|
|
6
|
+
<ol class="ol-decimal">
|
|
7
|
+
<li>a</li>
|
|
8
|
+
<li>b</li>
|
|
9
|
+
<li>c</li>
|
|
10
|
+
</ol>
|
|
11
|
+
|
|
12
|
+
[Markdown]
|
|
13
|
+
3. a
|
|
14
|
+
4. b
|
|
15
|
+
5. c
|
|
16
|
+
[HTML]
|
|
17
|
+
<ol start="3" class="ol-decimal">
|
|
18
|
+
<li>a</li>
|
|
19
|
+
<li>b</li>
|
|
20
|
+
<li>c</li>
|
|
21
|
+
</ol>
|
|
22
|
+
|
|
23
|
+
[Markdown]
|
|
24
|
+
1. a
|
|
25
|
+
3. b
|
|
26
|
+
4. c
|
|
27
|
+
[HTML]
|
|
28
|
+
<ol class="ol-decimal">
|
|
29
|
+
<li>a</li>
|
|
30
|
+
<li value="3">b</li>
|
|
31
|
+
<li>c</li>
|
|
32
|
+
</ol>
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
[Markdown]
|
|
36
|
+
- i. a
|
|
37
|
+
- ii. b
|
|
38
|
+
- iii. c
|
|
39
|
+
[HTML]
|
|
40
|
+
<ol type="i" class="ol-lower-roman">
|
|
41
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> a</li>
|
|
42
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> b</li>
|
|
43
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> c</li>
|
|
44
|
+
</ol>
|
|
45
|
+
|
|
46
|
+
[Markdown]
|
|
47
|
+
- a
|
|
48
|
+
- b
|
|
49
|
+
- c
|
|
50
|
+
[HTML]
|
|
51
|
+
<ul>
|
|
52
|
+
<li>a</li>
|
|
53
|
+
<li>b</li>
|
|
54
|
+
<li>c</li>
|
|
55
|
+
</ul>
|
|
56
|
+
|
|
57
|
+
[Markdown]
|
|
58
|
+
- ❶ a
|
|
59
|
+
- ❷ b
|
|
60
|
+
- ❸ c
|
|
61
|
+
[HTML]
|
|
62
|
+
<ol class="ol-filled-circled-decimal">
|
|
63
|
+
<li><span class="li-num">❶</span> a</li>
|
|
64
|
+
<li><span class="li-num">❷</span> b</li>
|
|
65
|
+
<li><span class="li-num">❸</span> c</li>
|
|
66
|
+
</ol>
|
|
67
|
+
|
|
68
|
+
[Markdown]
|
|
69
|
+
2. a
|
|
70
|
+
3. b
|
|
71
|
+
4. c
|
|
72
|
+
[HTML]
|
|
73
|
+
<ol start="2" class="ol-decimal">
|
|
74
|
+
<li>a</li>
|
|
75
|
+
<li>b</li>
|
|
76
|
+
<li>c</li>
|
|
77
|
+
</ol>
|
|
78
|
+
|
|
79
|
+
[Markdown]
|
|
80
|
+
- ② a
|
|
81
|
+
- ③ b
|
|
82
|
+
- ④ c
|
|
83
|
+
[HTML]
|
|
84
|
+
<ol start="2" class="ol-circled-decimal">
|
|
85
|
+
<li><span class="li-num">②</span> a</li>
|
|
86
|
+
<li><span class="li-num">③</span> b</li>
|
|
87
|
+
<li><span class="li-num">④</span> c</li>
|
|
88
|
+
</ol>
|
|
89
|
+
|
|
90
|
+
[Markdown]
|
|
91
|
+
- (2). a
|
|
92
|
+
- (3). b
|
|
93
|
+
- (4). c
|
|
94
|
+
[HTML]
|
|
95
|
+
<ol start="2" class="ol-decimal-with-round-round">
|
|
96
|
+
<li><span class="li-num">(2)</span> a</li>
|
|
97
|
+
<li><span class="li-num">(3)</span> b</li>
|
|
98
|
+
<li><span class="li-num">(4)</span> c</li>
|
|
99
|
+
</ol>
|
|
100
|
+
|
|
101
|
+
[Markdown]
|
|
102
|
+
- 2). a
|
|
103
|
+
- 3). b
|
|
104
|
+
- 4). c
|
|
105
|
+
[HTML]
|
|
106
|
+
<ol start="2" class="ol-decimal-with-none-round">
|
|
107
|
+
<li><span class="li-num">2)</span> a</li>
|
|
108
|
+
<li><span class="li-num">3)</span> b</li>
|
|
109
|
+
<li><span class="li-num">4)</span> c</li>
|
|
110
|
+
</ol>
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
[Markdown]
|
|
114
|
+
1. 項目1
|
|
115
|
+
2. 項目2
|
|
116
|
+
- i. 項目2-i
|
|
117
|
+
- ii. 項目2-ii
|
|
118
|
+
- iii. 項目2-iii
|
|
119
|
+
3. 項目3
|
|
120
|
+
[HTML]
|
|
121
|
+
<ol class="ol-decimal">
|
|
122
|
+
<li>項目1</li>
|
|
123
|
+
<li>項目2
|
|
124
|
+
<ol type="i" class="ol-lower-roman">
|
|
125
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目2-i</li>
|
|
126
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目2-ii</li>
|
|
127
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目2-iii</li>
|
|
128
|
+
</ol>
|
|
129
|
+
</li>
|
|
130
|
+
<li>項目3</li>
|
|
131
|
+
</ol>
|
|
132
|
+
|
|
133
|
+
[Markdown]
|
|
134
|
+
- i. 項目i
|
|
135
|
+
- ii. 項目ii
|
|
136
|
+
1. 項目ii-1
|
|
137
|
+
2. 項目ii-2
|
|
138
|
+
3. 項目ii-3
|
|
139
|
+
- iii. 項目iii
|
|
140
|
+
[HTML]
|
|
141
|
+
<ol type="i" class="ol-lower-roman">
|
|
142
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目i</li>
|
|
143
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目ii
|
|
144
|
+
<ol class="ol-decimal">
|
|
145
|
+
<li>項目ii-1</li>
|
|
146
|
+
<li>項目ii-2</li>
|
|
147
|
+
<li>項目ii-3</li>
|
|
148
|
+
</ol>
|
|
149
|
+
</li>
|
|
150
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目iii</li>
|
|
151
|
+
</ol>
|
|
152
|
+
|
|
153
|
+
[Markdown]
|
|
154
|
+
- ❸ 項目❸
|
|
155
|
+
- ❹ 項目❹
|
|
156
|
+
- ② 項目❹-②
|
|
157
|
+
- ③ 項目❹-③
|
|
158
|
+
- ④ 項目❹-④
|
|
159
|
+
- ❺ 項目❺
|
|
160
|
+
[HTML]
|
|
161
|
+
<ol start="3" class="ol-filled-circled-decimal">
|
|
162
|
+
<li><span class="li-num">❸</span> 項目❸</li>
|
|
163
|
+
<li><span class="li-num">❹</span> 項目❹
|
|
164
|
+
<ol start="2" class="ol-circled-decimal">
|
|
165
|
+
<li><span class="li-num">②</span> 項目❹-②</li>
|
|
166
|
+
<li><span class="li-num">③</span> 項目❹-③</li>
|
|
167
|
+
<li><span class="li-num">④</span> 項目❹-④</li>
|
|
168
|
+
</ol>
|
|
169
|
+
</li>
|
|
170
|
+
<li><span class="li-num">❺</span> 項目❺</li>
|
|
171
|
+
</ol>
|
|
172
|
+
|
|
173
|
+
[Markdown]
|
|
174
|
+
1. 項目1
|
|
175
|
+
2. 項目2
|
|
176
|
+
- i. 項目2-i
|
|
177
|
+
- ii. 項目2-ii
|
|
178
|
+
- a. 項目2-ii-a
|
|
179
|
+
- b. 項目2-ii-b
|
|
180
|
+
- c. 項目2-ii-c
|
|
181
|
+
- iii. 項目2-iii
|
|
182
|
+
3. 項目3
|
|
183
|
+
[HTML]
|
|
184
|
+
<ol class="ol-decimal">
|
|
185
|
+
<li>項目1</li>
|
|
186
|
+
<li>項目2
|
|
187
|
+
<ol type="i" class="ol-lower-roman">
|
|
188
|
+
<li><span class="li-num">i<span class="li-num-joint">.</span></span> 項目2-i</li>
|
|
189
|
+
<li><span class="li-num">ii<span class="li-num-joint">.</span></span> 項目2-ii
|
|
190
|
+
<ol type="a" class="ol-lower-latin">
|
|
191
|
+
<li><span class="li-num">a<span class="li-num-joint">.</span></span> 項目2-ii-a</li>
|
|
192
|
+
<li><span class="li-num">b<span class="li-num-joint">.</span></span> 項目2-ii-b</li>
|
|
193
|
+
<li><span class="li-num">c<span class="li-num-joint">.</span></span> 項目2-ii-c</li>
|
|
194
|
+
</ol>
|
|
195
|
+
</li>
|
|
196
|
+
<li><span class="li-num">iii<span class="li-num-joint">.</span></span> 項目2-iii</li>
|
|
197
|
+
</ol>
|
|
198
|
+
</li>
|
|
199
|
+
<li>項目3</li>
|
|
200
|
+
</ol>
|
|
201
|
+
|
package/test/test.js
CHANGED
|
@@ -3,40 +3,75 @@ const fs = require('fs');
|
|
|
3
3
|
const md = require('markdown-it')();
|
|
4
4
|
const mdNumUl = require('../index.js');
|
|
5
5
|
|
|
6
|
-
md.use(mdNumUl
|
|
6
|
+
md.use(mdNumUl, {
|
|
7
|
+
describeListNumber: false,
|
|
8
|
+
unsetListRole: false,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const md2 = require('markdown-it')();
|
|
12
|
+
md2.use(mdNumUl, {
|
|
13
|
+
listNumberTitleLang: 'ja',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
let example = __dirname + '/examples.txt';
|
|
17
|
+
let mdPath = __dirname + '/examples.md';
|
|
7
18
|
|
|
8
|
-
const example = __dirname + '/examples.txt';
|
|
9
|
-
const mdPath = __dirname + '/examples.md';
|
|
10
|
-
const exampleCont = fs.readFileSync(example, 'utf-8').trim();
|
|
11
19
|
let ms = [];
|
|
12
|
-
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const setMs = (example, ms) => {
|
|
21
|
+
let exampleCont = fs.readFileSync(example, 'utf-8').trim();
|
|
22
|
+
let ms0 = exampleCont.split(/\n*\[Markdown\]\n/);
|
|
23
|
+
let n = 1;
|
|
24
|
+
while (n < ms0.length) {
|
|
25
|
+
let mhs = ms0[n].split(/\n+\[HTML[^\]]*?\]\n/);
|
|
26
|
+
let i = 1;
|
|
27
|
+
while (i < 2) {
|
|
28
|
+
if (mhs[i] === undefined) {
|
|
29
|
+
mhs[i] = '';
|
|
30
|
+
} else {
|
|
31
|
+
mhs[i] = mhs[i].replace(/$/,'\n');
|
|
32
|
+
}
|
|
33
|
+
i++;
|
|
22
34
|
}
|
|
23
|
-
|
|
35
|
+
ms[n] = {
|
|
36
|
+
"markdown": mhs[0],
|
|
37
|
+
"html": mhs[1],
|
|
38
|
+
};
|
|
39
|
+
n++;
|
|
24
40
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
41
|
+
return;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
setMs(example, ms);
|
|
45
|
+
|
|
46
|
+
let n = 1;
|
|
47
|
+
while(n < ms.length) {
|
|
48
|
+
//if (n >= 5) { n++; continue };
|
|
49
|
+
console.log('Test: ' + n + ' >>>');
|
|
50
|
+
//console.log(ms[n].markdown);
|
|
51
|
+
|
|
52
|
+
const m = ms[n].markdown;
|
|
53
|
+
const h = md.render(m);
|
|
54
|
+
try {
|
|
55
|
+
assert.strictEqual(h, ms[n].html);
|
|
56
|
+
} catch(e) {
|
|
57
|
+
console.log('incorrect: ');
|
|
58
|
+
console.log('H: ' + h +'C: ' + ms[n].html);
|
|
28
59
|
};
|
|
29
60
|
n++;
|
|
30
61
|
}
|
|
31
62
|
|
|
63
|
+
example = __dirname + '/examples-spantitle.txt';
|
|
64
|
+
ms = [];
|
|
65
|
+
setMs(example, ms);
|
|
66
|
+
|
|
32
67
|
n = 1;
|
|
33
68
|
while(n < ms.length) {
|
|
34
|
-
//if (n >=
|
|
69
|
+
//if (n >= 5) { n++; continue };
|
|
35
70
|
console.log('Test: ' + n + ' >>>');
|
|
36
71
|
//console.log(ms[n].markdown);
|
|
37
72
|
|
|
38
73
|
const m = ms[n].markdown;
|
|
39
|
-
const h =
|
|
74
|
+
const h = md2.render(m);
|
|
40
75
|
try {
|
|
41
76
|
assert.strictEqual(h, ms[n].html);
|
|
42
77
|
} catch(e) {
|
|
@@ -44,4 +79,6 @@ while(n < ms.length) {
|
|
|
44
79
|
console.log('H: ' + h +'C: ' + ms[n].html);
|
|
45
80
|
};
|
|
46
81
|
n++;
|
|
47
|
-
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|