unist-util-filter
unist utility to create a new tree with only nodes that pass a test.
Contents
- What is this?
- When should I use this?
- Install
- Use
- API
- Types
- Compatibility
- Related
- Contribute
- License
What is this?
This is a small utility that helps you clean a tree.
When should I use this?
You can use this utility to remove things from a tree.
This utility is very similar to unist-util-remove
, which
changes the given tree.
Modifying a tree like that utility does is much faster on larger documents.
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-filter
In Deno with esm.sh
:
import {filter} from 'https://esm.sh/unist-util-filter@5'
In browsers with esm.sh
:
<script type="module">
import {filter} from 'https://esm.sh/unist-util-filter@5?bundle'
</script>
Use
import {u} from 'unist-builder'
import {filter} from 'unist-util-filter'
const tree = u('root', [
u('leaf', '1'),
u('parent', [u('leaf', '2'), u('parent', [u('leaf', '3')])]),
u('leaf', '4')
])
const newTree = filter(tree, node => node.type !== 'leaf' || node.value % 2 === 0)
console.dir(newTree, {depth: null})
Yields:
{
type: 'root',
children: [
{type: 'parent', children: [{type: 'leaf', value: '2'}]},
{type: 'leaf', value: '4'}
]
}
API
This package exports the identifier filter
.
There is no default export.
filter(tree[, options][, test])
Create a new tree
of copies of all nodes that pass test
.
The tree is walked in preorder (NLR), visiting the node itself, then its head, etc.
Parameters
-
tree
(Node
) — tree to filter -
options
(Options
, optional) — configuration -
test
(Test
, optional) —unist-util-is
compatible test
Returns
New filtered tree (Node
or undefined
).
undefined
is returned if tree
itself didn’t pass the test, or is cascaded
away.
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-filter@^5
,
compatible with Node.js 16.
Related
-
unist-util-visit
— walk the tree -
unist-util-visit-parents
— walk the tree with a stack of parents -
unist-util-map
— create a new tree with all nodes mapped by a given function -
unist-util-flatmap
— create a new tree by mapping (to an array) by a given function -
unist-util-remove
— remove nodes from a tree that pass a test -
unist-util-select
— select nodes with CSS-like selectors
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, organization, or community you agree to abide by its terms.
License
MIT © Eugene Sharygin