kjelsrud.dev/node_modules/hast-util-whitespace/index.js
2023-07-19 21:31:30 +02:00

25 lines
891 B
JavaScript

/**
* Check if the given value is *inter-element whitespace*.
*
* @param {unknown} thing
* Thing to check (typically `Node` or `string`).
* @returns {boolean}
* Whether the `value` is inter-element whitespace (`boolean`): consisting of
* zero or more of space, tab (`\t`), line feed (`\n`), carriage return
* (`\r`), or form feed (`\f`).
* If a node is passed it must be a `Text` node, whose `value` field is
* checked.
*/
export function whitespace(thing) {
/** @type {string} */
const value =
// @ts-expect-error looks like a node.
thing && typeof thing === 'object' && thing.type === 'text'
? // @ts-expect-error looks like a text.
thing.value || ''
: thing
// HTML whitespace expression.
// See <https://infra.spec.whatwg.org/#ascii-whitespace>.
return typeof value === 'string' && value.replace(/[ \t\n\f\r]/g, '') === ''
}