mirror of
https://github.com/showdownjs/showdown.git
synced 2024-03-22 13:30:55 +08:00
feat(ol start num): add support for defining the first num of ol
Implement support for starting ordered lists at an arbitrary number Closes #377 BREAKING CHANGE: Since showdown now supports starting ordered lists at an arbitrary number, list output may differ.
This commit is contained in:
parent
5b8f1d312f
commit
9cdc35e705
BIN
dist/showdown.js
vendored
BIN
dist/showdown.js
vendored
Binary file not shown.
BIN
dist/showdown.js.map
vendored
BIN
dist/showdown.js.map
vendored
Binary file not shown.
BIN
dist/showdown.min.js
vendored
BIN
dist/showdown.min.js
vendored
Binary file not shown.
BIN
dist/showdown.min.js.map
vendored
BIN
dist/showdown.min.js.map
vendored
Binary file not shown.
|
@ -3,7 +3,6 @@
|
||||||
*/
|
*/
|
||||||
showdown.subParser('lists', function (text, options, globals) {
|
showdown.subParser('lists', function (text, options, globals) {
|
||||||
'use strict';
|
'use strict';
|
||||||
text = globals.converter._dispatch('lists.before', text, options, globals);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process the contents of a single ordered or unordered list, splitting it
|
* Process the contents of a single ordered or unordered list, splitting it
|
||||||
|
@ -123,6 +122,17 @@ showdown.subParser('lists', function (text, options, globals) {
|
||||||
return listStr;
|
return listStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function styleStartNumber (list, listType) {
|
||||||
|
// check if ol and starts by a number different than 1
|
||||||
|
if (listType === 'ol') {
|
||||||
|
var res = list.match(/^ *(\d+)\./);
|
||||||
|
if (res && res[1] !== '1') {
|
||||||
|
return ' start="' + res[1] + '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check and parse consecutive lists (better fix for issue #142)
|
* Check and parse consecutive lists (better fix for issue #142)
|
||||||
* @param {string} list
|
* @param {string} list
|
||||||
|
@ -140,10 +150,11 @@ showdown.subParser('lists', function (text, options, globals) {
|
||||||
|
|
||||||
if (list.search(counterRxg) !== -1) {
|
if (list.search(counterRxg) !== -1) {
|
||||||
(function parseCL (txt) {
|
(function parseCL (txt) {
|
||||||
var pos = txt.search(counterRxg);
|
var pos = txt.search(counterRxg),
|
||||||
|
style = styleStartNumber(list, listType);
|
||||||
if (pos !== -1) {
|
if (pos !== -1) {
|
||||||
// slice
|
// slice
|
||||||
result += '\n<' + listType + '>\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\n';
|
result += '\n<' + listType + style + '>\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\n';
|
||||||
|
|
||||||
// invert counterType and listType
|
// invert counterType and listType
|
||||||
listType = (listType === 'ul') ? 'ol' : 'ul';
|
listType = (listType === 'ul') ? 'ol' : 'ul';
|
||||||
|
@ -152,16 +163,19 @@ showdown.subParser('lists', function (text, options, globals) {
|
||||||
//recurse
|
//recurse
|
||||||
parseCL(txt.slice(pos));
|
parseCL(txt.slice(pos));
|
||||||
} else {
|
} else {
|
||||||
result += '\n<' + listType + '>\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\n';
|
result += '\n<' + listType + style + '>\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\n';
|
||||||
}
|
}
|
||||||
})(list);
|
})(list);
|
||||||
} else {
|
} else {
|
||||||
result = '\n<' + listType + '>\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\n';
|
var style = styleStartNumber(list, listType);
|
||||||
|
result = '\n<' + listType + style + '>\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Start of list parsing **/
|
||||||
|
text = globals.converter._dispatch('lists.before', text, options, globals);
|
||||||
// add sentinel to hack around khtml/safari bug:
|
// add sentinel to hack around khtml/safari bug:
|
||||||
// http://bugs.webkit.org/show_bug.cgi?id=11231
|
// http://bugs.webkit.org/show_bug.cgi?id=11231
|
||||||
text += '¨0';
|
text += '¨0';
|
||||||
|
|
12
test/cases/ordered-list-starting-number.html
Normal file
12
test/cases/ordered-list-starting-number.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<ol start="5">
|
||||||
|
<li>foo</li>
|
||||||
|
<li>bar</li>
|
||||||
|
<li>baz</li>
|
||||||
|
</ol>
|
||||||
|
<hr />
|
||||||
|
<ol start="3">
|
||||||
|
<li>a</li>
|
||||||
|
<li>b</li>
|
||||||
|
<li>c</li>
|
||||||
|
<li>d</li>
|
||||||
|
</ol>
|
10
test/cases/ordered-list-starting-number.md
Normal file
10
test/cases/ordered-list-starting-number.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
5. foo
|
||||||
|
6. bar
|
||||||
|
7. baz
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
3. a
|
||||||
|
2. b
|
||||||
|
7. c
|
||||||
|
23. d
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
8. Red
|
1. Red
|
||||||
1. Green
|
1. Green
|
||||||
3. Blue
|
1. Blue
|
||||||
|
|
Loading…
Reference in New Issue
Block a user