unist-util-assert
unist utility to assert trees.
Install
npm:
npm install unist-util-assert
Use
var assert = require('unist-util-assert')
assert({type: 'root', children: []})
assert({type: 'break'})
assert({type: 'element', properties: {}, children: []})
// All OK.
assert({children: []})
// AssertionError: node should have a type: `{ children: [] }`
assert.parent({type: 'break'})
// AssertionError: parent should have `children`: `{ type: 'break' }`
assert({type: 'element', properties: function() {}})
// AssertionError: non-specced property `properties` should be JSON: `{ type: 'element', properties: [Function] }`
assert.void({type: 'text', value: 'Alpha'})
// AssertionError: void should not have `value`: `{ type: 'text', value: 'Alpha' }`
assert({type: 'paragraph', children: ['foo']})
// AssertionError: node should be an object: `'foo'` in `{ type: 'paragraph', children: [ 'foo' ] }`
API
assert(tree)
Assert that tree
is a valid unist node.
If tree
is a parent, all children will be asserted as well.
assert.parent(tree)
Assert that tree
is a valid unist parent.
All children will be asserted as well.
assert.text(node)
Assert that node
is a valid unist literal.
assert.void(node)
Assert that node
is a valid unist node, but neither parent nor
literal.
Extensions
This module can be used as a base to test subsets of unist (for an example,
see mdast-util-assert
).
All functions that are exposed from such a module, and functions used internally
to test children, should be wrapped in assert.wrap
, which adds an
inspectable string of the respective node, and its parent when available, to
the exposed error message.
assert.wrap(fn)
Wraps fn
(which is passed a node, and an optional parent node), so that any
errors thrown inside it will contain information regarding the node (and the
parent, when given).
Related
mdast-util-assert
— Check mdast nodeshast-util-assert
— Check hast nodesnlcst-test
— Check nlcst nodes
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.