All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
module.exports = heading
|
|
|
|
var repeat = require('repeat-string')
|
|
var formatHeadingAsSetext = require('../util/format-heading-as-setext')
|
|
var phrasing = require('../util/container-phrasing')
|
|
|
|
function heading(node, _, context) {
|
|
var rank = Math.max(Math.min(6, node.depth || 1), 1)
|
|
var exit
|
|
var subexit
|
|
var value
|
|
var sequence
|
|
|
|
if (formatHeadingAsSetext(node, context)) {
|
|
exit = context.enter('headingSetext')
|
|
subexit = context.enter('phrasing')
|
|
value = phrasing(node, context, {before: '\n', after: '\n'})
|
|
subexit()
|
|
exit()
|
|
|
|
return (
|
|
value +
|
|
'\n' +
|
|
repeat(
|
|
rank === 1 ? '=' : '-',
|
|
// The whole size…
|
|
value.length -
|
|
// Minus the position of the character after the last EOL (or
|
|
// 0 if there is none)…
|
|
(Math.max(value.lastIndexOf('\r'), value.lastIndexOf('\n')) + 1)
|
|
)
|
|
)
|
|
}
|
|
|
|
sequence = repeat('#', rank)
|
|
exit = context.enter('headingAtx')
|
|
subexit = context.enter('phrasing')
|
|
value = phrasing(node, context, {before: '# ', after: '\n'})
|
|
value = value ? sequence + ' ' + value : sequence
|
|
if (context.options.closeAtx) {
|
|
value += ' ' + sequence
|
|
}
|
|
|
|
subexit()
|
|
exit()
|
|
|
|
return value
|
|
}
|