hast-util-is-element
hast utility to check if a node is a (certain) element.
Contents
What is this?
This package is a small utility that checks that a node is a certain element.
When should I use this?
Use this small utility if you find yourself repeating code for checking what
elements nodes are.
A similar package, unist-util-is
, works on any unist node.
For more advanced tests, hast-util-select
can be used
to match against CSS selectors.
Install
This package is ESM only.
In Node.js (version 16+), install with npm:
npm install hast-util-is-element
In Deno with esm.sh
:
import {isElement} from 'https://esm.sh/hast-util-is-element@3'
In browsers with esm.sh
:
<script type="module">
import {isElement} from 'https://esm.sh/hast-util-is-element@3?bundle'
</script>
Use
import {isElement} from 'hast-util-is-element'
isElement({type: 'text', value: 'foo'})
isElement({type: 'element', tagName: 'a', properties: {}, children: []})
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'a')
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'b')
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, ['a', 'area'])
API
This package exports the identifiers
convertElement
and
isElement
.
There is no default export.
isElement(element[, test[, index, parent[, context]]])
Check if element
is an Element
and whether it passes the given test.
Parameters
element
(unknown
, optional)
— thing to check, typically Node
test
(Test
, optional)
— check for a specific elementindex
(number
, optional)
— position of element
in its parentparent
(Parent
, optional)
— parent of element
context
(unknown
, optional)
— context object (this
) to call test
with
Returns
Whether element
is an Element
and passes a test (boolean
).
Throws
When an incorrect test
, index
, or parent
is given.
There is no error thrown when element
is not a node or not an element.
convertElement(test)
Generate a check from a test.
Useful if you’re going to test many nodes, for example when creating a
utility where something else passes a compatible test.
The created function is a bit faster because it expects valid input only:
a element
, index
, and parent
.
Parameters
test
(Test
, optional)
— a test for a specific element
Returns
A check (Check
).
Check
Check that an arbitrary value is an element (TypeScript type).
Parameters
this
(unknown
, optional)
— context object (this
) to call test
withelement
(unknown
)
— anything (typically an element)index
(number
, optional)
— position of element
in its parentparent
(Parent
, optional)
— parent of element
Returns
Whether this is an element and passes a test (boolean
).
Test
Check for an arbitrary element (TypeScript type).
- when
string
, checks that the element has that tag name - when
function
, see TestFunction
- when
Array
, checks if one of the subtests pass
Type
type Test =
| Array<TestFunction | string>
| TestFunction
| string
| null
| undefined
TestFunction
Check if an element passes a test (TypeScript type).
Parameters
element
(Element
)
— an elementindex
(number
or undefined
)
— position of element
in its parentparent
(Parent
or undefined
)
— parent of element
Returns
Whether this element passes the test (boolean
, optional).
Types
This package is fully typed with TypeScript.
It exports the additional types Check
,
Test
, and
TestFunction
.
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, hast-util-is-element@^3
,
compatible with Node.js 16.
Security
hast-util-is-element
does not change the syntax tree so there are no openings
for cross-site scripting (XSS) attacks.
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, organization, or community you agree to
abide by its terms.
License
MIT © Titus Wormer