This commit is contained in:
64
node_modules/mdast-util-to-markdown/lib/handle/code.js
generated
vendored
Normal file
64
node_modules/mdast-util-to-markdown/lib/handle/code.js
generated
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
module.exports = code
|
||||
|
||||
var repeat = require('repeat-string')
|
||||
var streak = require('longest-streak')
|
||||
var formatCodeAsIndented = require('../util/format-code-as-indented')
|
||||
var checkFence = require('../util/check-fence')
|
||||
var indentLines = require('../util/indent-lines')
|
||||
var safe = require('../util/safe')
|
||||
|
||||
function code(node, _, context) {
|
||||
var marker = checkFence(context)
|
||||
var raw = node.value || ''
|
||||
var suffix = marker === '`' ? 'GraveAccent' : 'Tilde'
|
||||
var value
|
||||
var sequence
|
||||
var exit
|
||||
var subexit
|
||||
|
||||
if (formatCodeAsIndented(node, context)) {
|
||||
exit = context.enter('codeIndented')
|
||||
value = indentLines(raw, map)
|
||||
} else {
|
||||
sequence = repeat(marker, Math.max(streak(raw, marker) + 1, 3))
|
||||
exit = context.enter('codeFenced')
|
||||
value = sequence
|
||||
|
||||
if (node.lang) {
|
||||
subexit = context.enter('codeFencedLang' + suffix)
|
||||
value += safe(context, node.lang, {
|
||||
before: '`',
|
||||
after: ' ',
|
||||
encode: ['`']
|
||||
})
|
||||
subexit()
|
||||
}
|
||||
|
||||
if (node.lang && node.meta) {
|
||||
subexit = context.enter('codeFencedMeta' + suffix)
|
||||
value +=
|
||||
' ' +
|
||||
safe(context, node.meta, {
|
||||
before: ' ',
|
||||
after: '\n',
|
||||
encode: ['`']
|
||||
})
|
||||
subexit()
|
||||
}
|
||||
|
||||
value += '\n'
|
||||
|
||||
if (raw) {
|
||||
value += raw + '\n'
|
||||
}
|
||||
|
||||
value += sequence
|
||||
}
|
||||
|
||||
exit()
|
||||
return value
|
||||
}
|
||||
|
||||
function map(line, _, blank) {
|
||||
return (blank ? '' : ' ') + line
|
||||
}
|
||||
Reference in New Issue
Block a user