unist utility to create an index from certain nodes.
This utility creates a mutable index data structure, that maps property values or computed keys, to nodes. For example, you can use this to index all (footnote) definitions in a tree, or all headings of a certain rank, to later retrieve them without having to walk the tree each time.
This is a utility that helps you deal with indexing the tree. It’s pretty small, and you can definitely do it yourself, but this little wrapper makes it all a bit easier.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install unist-util-index
In Deno with esm.sh
:
import {Index} from 'https://esm.sh/unist-util-index@4'
In browsers with esm.sh
:
<script type="module"> import {Index} from 'https://esm.sh/unist-util-index@4?bundle' </script>
import fs from 'node:fs/promises' import {fromMarkdown} from 'mdast-util-from-markdown' import {toString} from 'mdast-util-to-string' import {Index} from 'unist-util-index' // Parse and read this repo’s readme: const tree = fromMarkdown(await fs.readFile('readme.md')) // Index on heading depth: const indexOnDepth = new Index('depth', tree, 'heading') console.log( indexOnDepth.get(2).map(function (d) { return toString(d) }) ) // Index on definition identifier: const indexOnIdentifier = new Index('identifier', tree, 'definition') console.log( indexOnIdentifier.get('unist').map(function (node) { return node.url }) )
Yields:
[ 'Contents', 'What is this?', 'When should I use this?', 'Install', 'Use', 'API', 'Types', 'Compatibility', 'Related', 'Contribute', 'License' ] [ 'https://github.com/syntax-tree/unist' ]
This package exports the identifier Index
. There is no default export.
Index(prop|keyFunction[, tree[, test]])
Create a mutable index data structure, that maps property values or computed keys, to nodes.
If tree
is given, the index is initialized with all nodes, optionally filtered by test
.
prop
(string
) — field to look up in each node to find keyskeyFunction
(KeyFunction
) — function called with each node to calculate keystree
(Node
, optional) — tree to indextest
(Test
, optional) — unist-util-is
compatible testInstance (Index
).
Get nodes by key
.
key
(unknown
) — key to retrieve, can be anything that can be used as a key in a Map
List of zero or more nodes (Array<Node>
).
Add node
to the index (if not already present).
node
(Node
) — node to indexCurrent instance (Index
).
Remove node
from the index (if present).
node
(Node
) — node to removeCurrent instance (Index
).
Function called with every added node to calculate the key to index on (TypeScript type).
node
(Node
) — node to calculate a key forKey to index on (unknown
).
Can be anything that can be used as a key in a Map
.
unist-util-is
compatible test (TypeScript type).
This package is fully typed with TypeScript. It exports the additional types KeyFunction
and Test
.
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-index@^4
, compatible with Node.js 16.
unist-util-is
— utility to check if a node passes a testunist-util-visit
— utility to recursively walk over nodesunist-util-select
— select nodes with CSS-like selectorsSee 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.
MIT © Eugene Sharygin
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