Nonconformist Propaganda Machine
    Wondering what’s next for npm?Check out our public roadmap! »

    nlcst-search
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.0 • Public • Published

    nlcst-search

    Build Coverage Downloads Size Sponsors Backers Chat

    nlcst utility to search for patterns in a tree.

    Install

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

    npm:

    npm install nlcst-search

    Use

    import {search} from 'nlcst-search'
    import {toString} from 'nlcst-to-string'
    
    var tree = {
      type: 'SentenceNode',
      children: [
        {
          type: 'WordNode',
          children: [
            {type: 'TextNode', value: 'Don'},
            {type: 'PunctuationNode', value: '’'},
            {type: 'TextNode', value: 't'}
          ]
        },
        {type: 'WhiteSpaceNode', value: ' '},
        {
          type: 'WordNode',
          children: [{type: 'TextNode', value: 'do'}]
        },
        {type: 'WhiteSpaceNode', value: ' '},
        {
          type: 'WordNode',
          children: [
            {type: 'TextNode', value: 'Block'},
            {type: 'PunctuationNode', value: '-'},
            {type: 'TextNode', value: 'level'}
          ]
        }
      ]
    }
    
    search(tree, ['dont'], function(nodes) {
      console.log(toString(nodes))
    })
    // `Don’t`
    
    search(tree, ['do blocklevel'], function(nodes) {
      console.log(toString(nodes))
    })
    // `do Block-level`

    API

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

    search(tree, patterns, handler[, allowApostrophes|options])

    Search for patterns a tree.

    Throws

    Error — When not given node or patterns.

    Parameters
    node

    Tree to search in (Node).

    patterns

    Patterns to search for (Array.<string> or Object). If an Object, uses its keys as patterns. Each pattern is a space-delimited list of words, where each word is normalized to remove casing, apostrophes, and dashes. Spaces in a pattern mean zero or more white space nodes in the tree. Instead of a word, it’s also possible to use a wildcard symbol (*, an asterisk), that matches any word in a pattern (alpha * charlie).

    handler

    Handler invoked when a match is found (Function).

    allowApostrophes

    Treated as options.allowApostrophes.

    options.allowApostrophes

    Passed to nlcst-normalize (boolean, default: false).

    options.allowDashes

    Passed to nlcst-normalize (boolean, default: false).

    options.allowLiterals

    Include literal phrases (boolean, default: false).

    function handler(nodes, index, parent, pattern)

    Handler invoked when a match is found.

    Parameters
    nodes

    List of siblings that match pattern (Array.<Node>).

    index

    Index where the match starts in parent (number).

    parent

    Parent node of nodes (Node).

    pattern

    The matched pattern (string).

    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 nlcst-search

    DownloadsWeekly Downloads

    18,779

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    13.3 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar
    • avatar