unist utility to change children of a parent.
- What is this?
- When should I use this?
- Install
- Use
- API
- Types
- Compatibility
- Related
- Contribute
- License
This is a tiny utility that you can use to create a reusable function that modifies children.
Probably never!
Use unist-util-visit
.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install unist-util-modify-children
In Deno with esm.sh
:
import {modifyChildren} from 'https://esm.sh/unist-util-modify-children@4'
In browsers with esm.sh
:
<script type="module">
import {modifyChildren} from 'https://esm.sh/unist-util-modify-children@4?bundle'
</script>
import u from 'unist-builder'
import {modifyChildren} from 'unist-util-modify-children'
const tree = u('root', [
u('leaf', '1'),
u('parent', [u('leaf', '2')]),
u('leaf', '3')
])
const modify = modifyChildren(function (node, index, parent) {
if (node.type === 'parent') {
parent.children.splice(index, 1, {type: 'subtree', children: parent.children})
return index + 1
}
})
modify(tree)
console.dir(tree, {depth: undefined})
Yields:
{
type: 'root',
children: [
{type: 'leaf', value: '1'},
{type: 'subtree', children: [{type: 'leaf', value: '2'}]},
{type: 'leaf', value: '3'}
]
}
This package exports the identifier modifyChildren
.
There is no default export.
Wrap modifier
to be called for each child in the nodes later given to
modify
.
modifier
(Modifier
) — callback called for eachchild
inparent
later given tomodify
Modify children of parent
(Modify
).
Callback called for each child
in parent
later given to modify
(TypeScript type).
child
(Node
) — child ofparent
index
(number
) — position ofchild
inparent
parent
(Node
) — parent node
Position to move to next (optional) (number
or undefined
).
Modify children of parent
(TypeScript type).
parent
(Node
) — parent node
Nothing (undefined
).
This package is fully typed with TypeScript.
It exports the additional types Modifier
and
Modify
.
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line,
unist-util-modify-children@^4
, compatible with Node.js 16.
unist-util-visit
— walk the treeunist-util-visit-parents
— walk the tree with a stack of parentsunist-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-flatmap
— create a new tree by mapping (to an array) with the given functionunist-util-find-after
— find a node after another nodeunist-util-find-before
— find a node before another nodeunist-util-find-all-after
— find all nodes after another nodeunist-util-find-all-before
— find all nodes before another nodeunist-util-find-all-between
— find all nodes between two nodesunist-util-remove
— remove nodes from a tree that pass a testunist-util-select
— select nodes with CSS-like selectors
See contributing.md
in syntax-tree/.github
for
ways to get started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.