<!-- DO NOT MODIFY -->
<!-- This file was autogenerated by build-docs.ts -->
<!-- Edit the docstring in index.ts and regenerate -->
<!-- rather than editing this file directly. -->
# 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<typeof Trie>; removeWord(word: string): ReturnType<typeof Trie>; ... 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 | <span color='gray'>Omitted</span> |
| options  | <span color='gray'>Omitted</span> |

## `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   | <span color='gray'>Omitted</span> |
| options | <span color='gray'>Omitted</span> |
