el-beeswarm
Version:
<div style="display: flex; padding: 1rem; flex-direction: column; align-items: center; justify-content: center; height: 100vh; text-align: center; display: flex;
49 lines (41 loc) • 1.22 kB
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
}