123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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
- }
|