WIP - add extractor, generate snippet_data
This commit is contained in:
61
node_modules/mdast-util-compact/index.js
generated
vendored
Normal file
61
node_modules/mdast-util-compact/index.js
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
'use strict'
|
||||
|
||||
var visit = require('unist-util-visit')
|
||||
|
||||
module.exports = compact
|
||||
|
||||
// Make an mdast tree compact by merging adjacent text nodes.
|
||||
function compact(tree, commonmark) {
|
||||
visit(tree, visitor)
|
||||
|
||||
return tree
|
||||
|
||||
function visitor(child, index, parent) {
|
||||
var siblings = parent ? parent.children : []
|
||||
var prev = index && siblings[index - 1]
|
||||
|
||||
if (
|
||||
prev &&
|
||||
child.type === prev.type &&
|
||||
mergeable(prev, commonmark) &&
|
||||
mergeable(child, commonmark)
|
||||
) {
|
||||
if (child.value) {
|
||||
prev.value += child.value
|
||||
}
|
||||
|
||||
if (child.children) {
|
||||
prev.children = prev.children.concat(child.children)
|
||||
}
|
||||
|
||||
siblings.splice(index, 1)
|
||||
|
||||
if (prev.position && child.position) {
|
||||
prev.position.end = child.position.end
|
||||
}
|
||||
|
||||
return index
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function mergeable(node, commonmark) {
|
||||
var start
|
||||
var end
|
||||
|
||||
if (node.type === 'text') {
|
||||
if (!node.position) {
|
||||
return true
|
||||
}
|
||||
|
||||
start = node.position.start
|
||||
end = node.position.end
|
||||
|
||||
// Only merge nodes which occupy the same size as their `value`.
|
||||
return (
|
||||
start.line !== end.line || end.column - start.column === node.value.length
|
||||
)
|
||||
}
|
||||
|
||||
return commonmark && node.type === 'blockquote'
|
||||
}
|
||||
Reference in New Issue
Block a user