You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
module.exports = listItem |
|
|
|
var repeat = require('repeat-string') |
|
var checkBullet = require('../util/check-bullet') |
|
var checkListItemIndent = require('../util/check-list-item-indent') |
|
var flow = require('../util/container-flow') |
|
var indentLines = require('../util/indent-lines') |
|
|
|
function listItem(node, parent, context) { |
|
var bullet = checkBullet(context) |
|
var listItemIndent = checkListItemIndent(context) |
|
var size |
|
var value |
|
var exit |
|
|
|
if (parent && parent.ordered) { |
|
bullet = |
|
(parent.start > -1 ? parent.start : 1) + |
|
(context.options.incrementListMarker === false |
|
? 0 |
|
: parent.children.indexOf(node)) + |
|
'.' |
|
} |
|
|
|
size = bullet.length + 1 |
|
|
|
if ( |
|
listItemIndent === 'tab' || |
|
(listItemIndent === 'mixed' && ((parent && parent.spread) || node.spread)) |
|
) { |
|
size = Math.ceil(size / 4) * 4 |
|
} |
|
|
|
exit = context.enter('listItem') |
|
value = indentLines(flow(node, context), map) |
|
exit() |
|
|
|
return value |
|
|
|
function map(line, index, blank) { |
|
if (index) { |
|
return (blank ? '' : repeat(' ', size)) + line |
|
} |
|
|
|
return (blank ? bullet : bullet + repeat(' ', size - bullet.length)) + line |
|
} |
|
}
|
|
|