# unified-latex-util-scan ## What is this? Functions to analyze `unified-latex` Abstract Syntax Tree (AST). ## When should I use this? If you want to look for particular AST nodes in an array; useful when making plugins. ## Install ```bash npm install @unified-latex/unified-latex-util-scan ``` This package contains both esm and commonjs exports. To explicitly access the esm export, import the `.js` file. To explicitly access the commonjs export, import the `.cjs` file. # Functions ## `prefixMatch(nodes, prefixes, options)` Efficiently search for a large number of strings using a prefix-tree. The longest match is returned. ```typescript function prefixMatch(nodes: Ast.Node[], prefixes: string | string[] | { dump(spacer?: number): string; tree(): any; addWord(word: string): ReturnType; removeWord(word: string): ReturnType; ... 7 more ...; getSubAnagrams(word: string): string[]; }, options: { startIndex?: number; matchSubstrings?: boolean; assumeOneCharStrings?: boolean; }): { match: string; endNodeIndex: number; endNodePartialMatch: string | null; } ``` **Parameters** | Param | Type | | :------- | :-------------------------------- | | nodes | `Ast.Node[]` | | prefixes | Omitted | | options | Omitted | ## `scan(nodes, token, options)` Scan `nodes` looking for the first occurrence of `token`. If `options.onlySkipWhitespaceAndComments==true`, then the scan will only skip whitespace/comment nodes. ```typescript function scan( nodes: (Ast.Node | Ast.Argument)[], token: string | Ast.Node | Ast.Argument, options: { startIndex?: number; onlySkipWhitespaceAndComments?: boolean; allowSubstringMatches?: boolean; } ): number; ``` **Parameters** | Param | Type | | :------ | :-------------------------------- | | nodes | `(Ast.Node \| Ast.Argument)[]` | | token | Omitted | | options | Omitted |