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) {
|
||||
'use strict';
|
||||
text = globals.converter._dispatch('lists.before', text, options, globals);
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
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)
|
||||
* @param {string} list
|
||||
|
@ -140,10 +150,11 @@ showdown.subParser('lists', function (text, options, globals) {
|
|||
|
||||
if (list.search(counterRxg) !== -1) {
|
||||
(function parseCL (txt) {
|
||||
var pos = txt.search(counterRxg);
|
||||
var pos = txt.search(counterRxg),
|
||||
style = styleStartNumber(list, listType);
|
||||
if (pos !== -1) {
|
||||
// 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
|
||||
listType = (listType === 'ul') ? 'ol' : 'ul';
|
||||
|
@ -152,16 +163,19 @@ showdown.subParser('lists', function (text, options, globals) {
|
|||
//recurse
|
||||
parseCL(txt.slice(pos));
|
||||
} else {
|
||||
result += '\n<' + listType + '>\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\n';
|
||||
result += '\n<' + listType + style + '>\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\n';
|
||||
}
|
||||
})(list);
|
||||
} 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;
|
||||
}
|
||||
|
||||
/** Start of list parsing **/
|
||||
text = globals.converter._dispatch('lists.before', text, options, globals);
|
||||
// add sentinel to hack around khtml/safari bug:
|
||||
// http://bugs.webkit.org/show_bug.cgi?id=11231
|
||||
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
|
||||
3. Blue
|
||||
1. Blue
|
||||
|
|
Loading…
Reference in New Issue
Block a user