UNPKG

react-markdown

Version:
45 lines (37 loc) 954 B
"use strict"; var visit = require('unist-util-visit'); exports.ofType = function (types, mode) { return function (node) { types.forEach(function (type) { return visit(node, type, disallow, true); }); return node; }; function disallow(node, index, parent) { if (parent) { untangle(node, index, parent, mode); } } }; exports.ifNotMatch = function (allowNode, mode) { return function (node) { visit(node, disallow, true); return node; }; function disallow(node, index, parent) { if (parent && !allowNode(node, index, parent)) { untangle(node, index, parent, mode); } } }; function untangle(node, index, parent, mode) { if (mode === 'remove') { parent.children.splice(index, 1); } else if (mode === 'unwrap') { var args = [index, 1]; if (node.children) { args = args.concat(node.children); } Array.prototype.splice.apply(parent.children, args); } }