nlcst-search
nlcst utility to search for patterns in a tree.
Install
npm:
npm install nlcst-search
Use
var search = require('nlcst-search')
var toString = require('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
search(node, patterns, handler[, allowApostrophes|options])
Search for patterns a tree.
Throws
Error
— When not given node
or patterns
.
Parameters
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
pattern
The matched pattern (string
).
Related
nlcst-normalize
— Normalize a word for easier comparisonnlcst-is-literal
— Check whether a node is meant literally
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.