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;
65 lines (54 loc) • 1.44 kB
JavaScript
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
}