unist-util-remove
unist utility to remove all nodes that pass a test from the tree.
Contents
What is this?
This is a small utility that helps you clean a tree by removing some stuff.
When should I use this?
You can use this utility to remove things from a tree.
This utility is very similar to unist-util-filter
, which
creates a new tree.
Modifying a tree like this utility unist-util-remove
does is much faster on
larger documents though.
You can also walk the tree with unist-util-visit
to remove
nodes.
To create trees, use unist-builder
.
Install
This package is ESM only.
In Node.js (version 16+), install with npm:
npm install unist-util-remove
In Deno with esm.sh
:
import {remove} from 'https://esm.sh/unist-util-remove@4'
In browsers with esm.sh
:
<script type="module">
import {remove} from 'https://esm.sh/unist-util-remove@4?bundle'
</script>
Use
import {u} from 'unist-builder'
import {remove} from 'unist-util-remove'
const tree = u('root', [
u('leaf', '1'),
u('parent', [
u('leaf', '2'),
u('parent', [u('leaf', '3'), u('other', '4')]),
u('parent', [u('leaf', '5')])
]),
u('leaf', '6')
])
// Remove all nodes of type `leaf`.
remove(tree, 'leaf')
console.dir(tree, {depth: undefined})
Yields:
{
type: 'root',
children: [
{
type: 'parent',
children: [{type: 'parent', children: [{type: 'other', value: '4'}]}]
}
]
}
👉 Note: the parent of leaf 5
is also removed, options.cascade
can
change that.
API
This package exports the identifier remove
.
There is no default export.
remove(tree[, options], test)
Change the given tree
by removing all nodes that pass test
.
tree
itself is never tested.
The tree is walked in preorder (NLR), visiting the node itself, then its
head, etc.
Parameters
tree
(Node
)
— tree to change
options
(Options
, optional)
— configuration
test
(Test
, optional)
— unist-util-is
compatible test
Returns
Nothing (undefined
).
Options
Configuration (TypeScript type).
Fields
cascade
(boolean
, default: true
)
— whether to drop parent nodes if they had children, but all their children
were filtered out
Types
This package is fully typed with TypeScript.
It exports the additional type Options
.
Compatibility
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-remove@^4
,
compatible with Node.js 16.
Related
Contribute
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, organisation, or community you agree to
abide by its terms.
License
MIT © Eugene Sharygin