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 }