@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 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 @peacroad/markdown-it-numbering-ul-regarded-as-ol
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 aria-label="i">a</li>
75
- <li aria-label="ii">b</li>
76
- <li aria-label="iii">c</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 role="list" class="ol-filled-circled-decimal">
96
- <li aria-label="">a</li>
97
- <li aria-label="">b</li>
98
- <li aria-label="">c</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" role="list" class="ol-circled-decimal">
118
- <li aria-label="">a</li>
119
- <li aria-label="">b</li>
120
- <li aria-label="">c</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" role="list" class="ol-decimal-with-round-round">
129
- <li aria-label="(2)">a</li>
130
- <li aria-label="(3)">b</li>
131
- <li aria-label="(4)">c</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" role="list" class="ol-decimal-with-none-round">
140
- <li aria-label="2)">a</li>
141
- <li aria-label="3)">b</li>
142
- <li aria-label="4)">c</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 aria-label="i">項目2-i</li>
159
- <li aria-label="ii">項目2-ii</li>
160
- <li aria-label="iii">項目2-iii</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" role="list" class="ol-filled-circled-decimal">
175
- <li aria-label="">項目❸</li>
176
- <li aria-label="">項目❹
177
- <ol start="2" role="list" class="ol-circled-decimal">
178
- <li aria-label="">項目❹-②</li>
179
- <li aria-label="">項目❹-③</li>
180
- <li aria-label="">項目❹-④</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 aria-label="">項目❺</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 aria-label="i">項目2-i</li>
202
- <li aria-label="ii">項目2-ii
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 aria-label="a">項目2-ii-a</li>
205
- <li aria-label="b">項目2-ii-b</li>
206
- <li aria-label="c">項目2-ii-c</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 aria-label="iii">項目2-iii</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 aria-label attribute and modify content.
360
- if (list.flows[lfn].symbols[sn].typesNum !== 0 || list.flows[lfn].symbols[sn].prefix || list.flows[lfn].symbols[sn].suffix) {
361
- state.tokens[cn].attrSet('aria-label', list.flows[lfn].symbols[sn].cont);
362
- }
363
-
364
- //console.log('state.tokens[cn+2]: ' + JSON.stringify(state.tokens[cn+2]));
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
- state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, '');
367
- state.tokens[cn+2].children[0].content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, '');
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peaceroad/markdown-it-numbering-ul-regarded-as-ol",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "This markdown-it plugin regard ul element with numbering lists as ol element.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -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
- let ms0 = exampleCont.split(/\n*\[Markdown\]\n/);
13
- let n = 1;
14
- while (n < ms0.length) {
15
- let mhs = ms0[n].split(/\n+\[HTML[^\]]*?\]\n/);
16
- let i = 1;
17
- while (i < 2) {
18
- if (mhs[i] === undefined) {
19
- mhs[i] = '';
20
- } else {
21
- mhs[i] = mhs[i].replace(/$/,'\n');
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
- i++;
35
+ ms[n] = {
36
+ "markdown": mhs[0],
37
+ "html": mhs[1],
38
+ };
39
+ n++;
24
40
  }
25
- ms[n] = {
26
- "markdown": mhs[0],
27
- "html": mhs[1],
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 >= 14) { n++; continue };
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 = md.render(m);
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
+