+++ /dev/null
-'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'
-}