Necessarily Precedes Mischief
    Have ideas to improve npm?Join in the discussion! »

    unist-util-is
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.0 • Public • Published

    unist-util-is

    Build Coverage Downloads Size Sponsors Backers Chat

    unist utility to check if a node passes a test.

    Install

    This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.

    npm:

    npm install unist-util-is

    Use

    import {is} from 'unist-util-is'
    
    var node = {type: 'strong'}
    var parent = {type: 'paragraph', children: [node]}
    
    function test(node, n) {
      return n === 5
    }
    
    is() // => false
    is({children: []}) // => false
    is(node) // => true
    is(node, 'strong') // => true
    is(node, 'emphasis') // => false
    
    is(node, node) // => true
    is(parent, {type: 'paragraph'}) // => true
    is(parent, {type: 'strong'}) // => false
    
    is(node, test) // => false
    is(node, test, 4, parent) // => false
    is(node, test, 5, parent) // => true

    API

    This package exports the following identifiers: is, convert. There is no default export.

    is(node[, test[, index, parent[, context]]])

    Parameters
    • node (Node) — Node to check.
    • test (Function, string, Object, or Array.<Test>, optional) — When nullish, checks if node is a Node. When string, works like passing node => node.type === test. When array, checks if any one of the subtests pass. When object, checks that all keys in test are in node, and that they have strictly equal values
    • index (number, optional) — Index of node in parent
    • parent (Node, optional) — Parent of node
    • context (*, optional) — Context object to invoke test with
    Returns

    boolean — Whether test passed and node is a Node (object with type set to a non-empty string).

    function test(node[, index, parent])

    Parameters
    • node (Node) — Node to check
    • index (number?) — Index of node in parent
    • parent (Node?) — Parent of node
    Context

    * — The to is given context.

    Returns

    boolean? — Whether node matches.

    convert(test)

    Create a test function from test, that can later be called with a node, index, and parent. Useful if you’re going to test many nodes, for example when creating a utility where something else passes an is-compatible test.

    The created function is slightly faster because it expects valid input only. Therefore, passing invalid input, yields unexpected results.

    For example:

    import u from 'unist-builder'
    import {convert} from 'unist-util-is'
    
    var test = convert('leaf')
    
    var tree = u('tree', [
      u('node', [u('leaf', '1')]),
      u('leaf', '2'),
      u('node', [u('leaf', '3'), u('leaf', '4')]),
      u('leaf', '5')
    ])
    
    var leafs = tree.children.filter((child, index) => test(child, index, tree))
    
    console.log(leafs)

    Yields:

    [{type: 'leaf', value: '2'}, {type: 'leaf', value: '5'}]

    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

    Install

    npm i unist-util-is

    DownloadsWeekly Downloads

    5,959,554

    Version

    5.0.0

    License

    MIT

    Unpacked Size

    18.5 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar
    • avatar