unist-builder
unist utility to create trees with ease.
Contents
- What is this?
- When should I use this?
- Install
- Use
- API
- Types
- Compatibility
- Related
- Contribute
- License
What is this?
This package is a hyperscript interface (like createElement
from React and
h
from Vue and such) to help with creating unist trees.
When should I use this?
You can use this utility in your project when you generate syntax trees with code. It helps because it replaces most of the repetition otherwise needed in a syntax tree with function calls.
You can instead use hastscript
or xastscript
when creating hast (HTML) or xast (XML) nodes.
Install
This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, or 18.0+), install with npm:
npm install unist-builder
In Deno with esm.sh
:
import {u} from 'https://esm.sh/unist-builder@3'
In browsers with esm.sh
:
<script type="module">
import {u} from 'https://esm.sh/unist-builder@3?bundle'
</script>
Use
import {u} from 'unist-builder'
const tree = u('root', [
u('subtree', {id: 1}),
u('subtree', {id: 2}, [
u('node', [u('leaf', 'leaf 1'), u('leaf', 'leaf 2')]),
u('leaf', {id: 3}, 'leaf 3'),
u('void', {id: 4})
])
])
console.dir(tree, {depth: null})
results in the following tree:
{
type: 'root',
children: [
{type: 'subtree', id: 1},
{
type: 'subtree',
id: 2,
children: [
{
type: 'node',
children: [
{type: 'leaf', value: 'leaf 1'},
{type: 'leaf', value: 'leaf 2'}
]
},
{type: 'leaf', id: 3, value: 'leaf 3'},
{type: 'void', id: 4}
]
}
]
}
API
This package exports the identifier u
.
There is no default export.
u(type[, props][, children|value])
Build a node.
Signatures
u(type[, props], children)
— create a parent (Parent
)u(type[, props], value)
— create a literal (Literal
)u(type[, props])
— create a void node (neither parent not literal)
Parameters
type
(string
) — node typeprops
(Record<string, unknown>
) — fields assigned to nodechildren
(Array<Node>
) — children of nodevalue
(*
) — value ofnode
(cast to string)
Returns
Built node (Node
).
Types
This package is fully typed with TypeScript.
It exports the additional types Props
and ChildrenOrValue
.
Compatibility
Projects maintained by the unified collective are compatible with all maintained versions of Node.js. As of now, that is Node.js 12.20+, 14.14+, 16.0+, and 18.0+. Our projects sometimes work with older versions, but this is not guaranteed.
Related
hastscript
— create hast treesxastscript
— create xast trees
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