hast-util-is-element

hast utility to check if a node is a (certain) element

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
hast-util-is-element
1103.0.09 months ago8 years agoMinified + gzip package size for hast-util-is-element in KB

Readme

hast-util-is-element
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
hast 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-isunist-util-is, works on any unist node.
For more advanced tests, hast-util-selecthast-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.shesmsh:
import {isElement} from 'https://esm.sh/hast-util-is-element@3'

In browsers with esm.shesmsh:
<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 identifiers convertElementapi-convert-element and isElementapi-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 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
— a test for a specific element
Returns
A check (Checkapi-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 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 TestFunctionapi-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
— an element
  • index (number or undefined)
— position of `element` in its parent
— 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 Checkapi-check, Testapi-test, and TestFunctionapi-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

See contributing.mdcontributing in syntax-tree/.githubhealth for ways to get started. See support.mdsupport 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.

License

MITlicense © Titus Wormerauthor