hast-util-is-element
!Buildbuild-badgebuild
!Coveragecoverage-badgecoverage
!Downloadsdownloads-badgedownloads
!Sizesize-badgesize
!Sponsorssponsors-badgecollective
!Backersbackers-badgecollective
!Chatchat-badgechathast utility to check if a node is a (certain) element.
Contents
* [`isElement(element[, test[, index, parent[, context]]])`](#iselementelement-test-index-parent-context)
* [`convertElement(test)`](#convertelementtest)
* [`Check`](#check)
* [`Test`](#test)
* [`TestFunction`](#testfunction)
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
unist-util-is, works on any unist node.For more advanced tests,
hast-util-select
hast-util-select can be used
to match against CSS selectors.Install
This package is ESM onlyesm. In Node.js (version 16+), install with npm:npm install hast-util-is-element
In Deno with
esm.sh
esmsh:import {isElement} from 'https://esm.sh/hast-util-is-element@3'
In browsers with
esm.sh
esmsh:<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'}) // => false
isElement({type: 'element', tagName: 'a', properties: {}, children: []}) // => true
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'a') // => true
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, 'b') // => false
isElement({type: 'element', tagName: 'a', properties: {}, children: []}, ['a', 'area']) // => true
API
This package exports the identifiersconvertElement
api-convert-element and
isElement
api-is-element.
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`][hast-node]
— check for a specific element
index
(number
, optional)
— position of `element` in its parent
parent
(Parent
hast-parent, optional)
— parent of `element`
context
(unknown
, optional)
— context object (`this`) to call `test` with
Returns
Whetherelement
is an Element
and passes a test (boolean
).Throws
When an incorrecttest
, 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
— a test for a specific element
Returns
A check (Check
api-check).Check
Check that an arbitrary value is an element (TypeScript type).Parameters
this
(unknown
, optional)
— context object (`this`) to call `test` with
element
(unknown
)
— anything (typically an element)
index
(number
, optional)
— position of `element` in its parent
parent
(Parent
hast-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
, seeTestFunction
api-test-function - 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
hast-element)
— an element
index
(number
orundefined
)
— position of `element` in its parent
parent
(Parent
hast-parent orundefined
)
— parent of `element`
Returns
Whether this element passes the test (boolean
, optional).Types
This package is fully typed with TypeScript. It exports the additional typesCheck
api-check,
Test
api-test, and
TestFunction
api-test-function.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)xss attacks.Related
— check if a node has a property
— check if a node is “Body OK” link element
— check if a node is a conditional comment
— check if a node is a CSS link element
— check if a node is a CSS style element
— check if a node is an embedded element
— check if a node is a heading element
— check if a node is interactive
— check if a node is a JavaScript script element
— check whether a node is labelable
— check if a node is phrasing content
— check if a node is a script-supporting element
— check if a node is a sectioning element
— check if a node is a transparent element
— check if a node is inter-element whitespace
Contribute
Seecontributing.md
contributing in syntax-tree/.github
health for
ways to get started.
See support.md
support for ways to get help.This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.