unist utility to recursively reduce a tree
npm:
npm install unist-util-reduce
const u = require("unist-builder"); const reduce = require("unist-util-reduce"); const assert = require("assert"); const tree = u("tree", [ u("leaf", "1"), u("node", [u("leaf", "2")]), u("void"), u("leaf", "3") ]); const newTree = reduce(tree, function(node) { if (node.value === "2") { const duplicateNode = { ...node, value: "two" }; return [duplicateNode, node]; } return node; }); const expected = u("tree", [ u("leaf", "1"), u("node", [u("leaf", "two"), u("leaf", "2")]), u("void"), u("leaf", "3") ]); assert.deepEqual(newTree, expected);
NOTE: leaf
with value
2
is visited before it's parent node
. By the time your transform
function is invoked, it's children
will already have been passed through transform
.
tree
- A node of type Parent
transform
- A function with the signature:
(node: Node, path: number[], root: Paretn) => Node | Node[]
node
- The Node
in the tree to be transformedpath
- The path to reach this node in each level of the treeroot
- The Parent
root node.concat()
on the children
array of the node's parent.unist-util-filter
— Create a new tree with all nodes that pass a testunist-util-map
— Create a new tree with all nodes mapped by a given functionunist-util-remove
— Remove nodes from a tree that pass a testunist-util-select
— Select nodes with CSS-like selectorsMIT © Callum Macdonald / GeneroUS Labs
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4