@peaceroad/markdown-it-numbering-ul-regarded-as-ol 0.1.1 → 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.md CHANGED
@@ -12,7 +12,17 @@ Input Markdown:
12
12
 
13
13
  Output HTML:
14
14
 
15
+ ```html
16
+ <ol type="i" class="ol-lower-roman">
17
+ <li>a</li>
18
+ <li>b</li>
19
+ <li>c</li>
20
+ </ol>
15
21
  ```
22
+
23
+ Using Option `omitTypeNumber: false` output HTML:
24
+
25
+ ```html
16
26
  <ol type="i" class="ol-lower-roman">
17
27
  <li><span class="li-num">i<span class="li-num-joint">.</span></span> a</li>
18
28
  <li><span class="li-num">ii<span class="li-num-joint">.</span></span> b</li>
package/index.js CHANGED
@@ -6,8 +6,10 @@ module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
6
6
  //noChangeBulletOneOrderedList: true,
7
7
  unsetListRole: true,
8
8
  describeListNumber: true,
9
+ omitTypeNumber: true,
9
10
  desdribelistNumterTitle: false,
10
11
  listNumberTitleLang: 'en',
12
+
11
13
  };
12
14
  if (option !== undefined) {
13
15
  for (let o in option) {
@@ -362,7 +364,6 @@ module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
362
364
 
363
365
  //Set list num span element.
364
366
  if (opt.describeListNumber) {
365
-
366
367
  const listNumBeforeToken = new state.Token('text', '', 0);
367
368
  const listNumOpenToken = new state.Token('span_open', 'span', 1);
368
369
  listNumOpenToken.attrSet('class', 'li-num');
@@ -383,23 +384,36 @@ module.exports = function numbering_ul_regarded_as_ol_plugin(md, option) {
383
384
  listNumJointContToken.content = list.flows[lfn].symbols[sn].joint.replace(/ *$/, '');
384
385
  const listNumJointCloseToken = new state.Token('span_close', 'span', -1);
385
386
 
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
387
 
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, ' ');
388
+ let otn = 0;
389
+ let isOlTypes = false;
390
+ while (otn < olTypes.length) {
391
+ isOlTypes = types[list.flows[lfn].symbols[sn].typesNum].name === olTypes[otn][1] && !list.flows[lfn].symbols[sn].prefix && !list.flows[lfn].symbols[sn].suffix;
392
+ if (isOlTypes) break;
393
+ otn++;
394
+ }
395
+ if (opt.omitTypeNumber && isOlTypes) {
396
+ state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, '');
397
+ state.tokens[cn+2].children[0].content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, '');
398
+ } else {
399
+
400
+ //console.log(state.tokens[cn+2]);
401
+ if (list.flows[lfn].symbols[sn].typesNum !== 0 || list.flows[lfn].symbols[sn].prefix || list.flows[lfn].symbols[sn].suffix) {
402
+ //console.log(state.tokens[cn+2]);
392
403
 
404
+ state.tokens[cn+2].content = state.tokens[cn+2].content.replace(list.flows[lfn].symbols[sn].contAll, ' ');
405
+ state.tokens[cn+2].children[0].content = state.tokens[cn+2].children[0].content.replace(list.flows[lfn].symbols[sn].contAll, ' ');
393
406
 
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);
407
+ //console.log(list.flows[lfn].symbols[sn])
408
+ if (/\. */.test(list.flows[lfn].symbols[sn].joint)) {
409
+ if (/\)/.test(list.flows[lfn].symbols[sn].suffix)) {
410
+ state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumCloseToken);
411
+ } else {
412
+ state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumJointOpenToken, listNumJointContToken,listNumJointCloseToken, listNumCloseToken);
413
+ }
398
414
  } else {
399
- state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumJointOpenToken, listNumJointContToken,listNumJointCloseToken, listNumCloseToken);
415
+ state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumCloseToken);
400
416
  }
401
- } else {
402
- state.tokens[cn+2].children.splice(0, 0, listNumOpenToken, listNumContToken, listNumCloseToken);
403
417
  }
404
418
  }
405
419
 
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.1",
3
+ "version": "0.1.2",
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>a</li>
42
+ <li>b</li>
43
+ <li>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>項目2-i</li>
126
+ <li>項目2-ii</li>
127
+ <li>項目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>項目i</li>
143
+ <li>項目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>項目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>項目2-i</li>
189
+ <li>項目2-ii
190
+ <ol type="a" class="ol-lower-latin">
191
+ <li>項目2-ii-a</li>
192
+ <li>項目2-ii-b</li>
193
+ <li>項目2-ii-c</li>
194
+ </ol>
195
+ </li>
196
+ <li>項目2-iii</li>
197
+ </ol>
198
+ </li>
199
+ <li>項目3</li>
200
+ </ol>
201
+
package/test/test.js CHANGED
@@ -10,9 +10,12 @@ md.use(mdNumUl, {
10
10
 
11
11
  const md2 = require('markdown-it')();
12
12
  md2.use(mdNumUl, {
13
- listNumberTitleLang: 'ja',
13
+ omitTypeNumber: false,
14
14
  });
15
15
 
16
+ const md3 = require('markdown-it')();
17
+ md3.use(mdNumUl);
18
+
16
19
  let example = __dirname + '/examples.txt';
17
20
  let mdPath = __dirname + '/examples.md';
18
21
 
@@ -81,4 +84,23 @@ while(n < ms.length) {
81
84
  n++;
82
85
  }
83
86
 
87
+ example = __dirname + '/examples-spantitle-omit-typeNumber.txt';
88
+ ms = [];
89
+ setMs(example, ms);
90
+
91
+ n = 1;
92
+ while(n < ms.length) {
93
+ //if (n >= 5) { n++; continue };
94
+ console.log('Test: ' + n + ' >>>');
95
+ //console.log(ms[n].markdown);
84
96
 
97
+ const m = ms[n].markdown;
98
+ const h = md3.render(m);
99
+ try {
100
+ assert.strictEqual(h, ms[n].html);
101
+ } catch(e) {
102
+ console.log('incorrect: ');
103
+ console.log('H: ' + h +'C: ' + ms[n].html);
104
+ };
105
+ n++;
106
+ }
package/____Markdown].txt DELETED
@@ -1,24 +0,0 @@
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>
@@ -1,214 +0,0 @@
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
- }