Spaces:
Sleeping
Sleeping
# @eslint-community/regexpp | |
[](https://www.npmjs.com/package/@eslint-community/regexpp) | |
[](http://www.npmtrends.com/@eslint-community/regexpp) | |
[](https://github.com/eslint-community/regexpp/actions) | |
[](https://codecov.io/gh/eslint-community/regexpp) | |
A regular expression parser for ECMAScript. | |
## πΏ Installation | |
```bash | |
$ npm install @eslint-community/regexpp | |
``` | |
- require Node@^12.0.0 || ^14.0.0 || >=16.0.0. | |
## π Usage | |
```ts | |
import { | |
AST, | |
RegExpParser, | |
RegExpValidator, | |
RegExpVisitor, | |
parseRegExpLiteral, | |
validateRegExpLiteral, | |
visitRegExpAST | |
} from "@eslint-community/regexpp" | |
``` | |
### parseRegExpLiteral(source, options?) | |
Parse a given regular expression literal then make AST object. | |
This is equivalent to `new RegExpParser(options).parseLiteral(source)`. | |
- **Parameters:** | |
- `source` (`string | RegExp`) The source code to parse. | |
- `options?` ([`RegExpParser.Options`]) The options to parse. | |
- **Return:** | |
- The AST of the regular expression. | |
### validateRegExpLiteral(source, options?) | |
Validate a given regular expression literal. | |
This is equivalent to `new RegExpValidator(options).validateLiteral(source)`. | |
- **Parameters:** | |
- `source` (`string`) The source code to validate. | |
- `options?` ([`RegExpValidator.Options`]) The options to validate. | |
### visitRegExpAST(ast, handlers) | |
Visit each node of a given AST. | |
This is equivalent to `new RegExpVisitor(handlers).visit(ast)`. | |
- **Parameters:** | |
- `ast` ([`AST.Node`]) The AST to visit. | |
- `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. | |
### RegExpParser | |
#### new RegExpParser(options?) | |
- **Parameters:** | |
- `options?` ([`RegExpParser.Options`]) The options to parse. | |
#### parser.parseLiteral(source, start?, end?) | |
Parse a regular expression literal. | |
- **Parameters:** | |
- `source` (`string`) The source code to parse. E.g. `"/abc/g"`. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
- **Return:** | |
- The AST of the regular expression. | |
#### parser.parsePattern(source, start?, end?, flags?) | |
Parse a regular expression pattern. | |
- **Parameters:** | |
- `source` (`string`) The source code to parse. E.g. `"abc"`. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
- `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode. | |
- **Return:** | |
- The AST of the regular expression pattern. | |
#### parser.parseFlags(source, start?, end?) | |
Parse a regular expression flags. | |
- **Parameters:** | |
- `source` (`string`) The source code to parse. E.g. `"gim"`. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
- **Return:** | |
- The AST of the regular expression flags. | |
### RegExpValidator | |
#### new RegExpValidator(options) | |
- **Parameters:** | |
- `options` ([`RegExpValidator.Options`]) The options to validate. | |
#### validator.validateLiteral(source, start, end) | |
Validate a regular expression literal. | |
- **Parameters:** | |
- `source` (`string`) The source code to validate. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
#### validator.validatePattern(source, start, end, flags) | |
Validate a regular expression pattern. | |
- **Parameters:** | |
- `source` (`string`) The source code to validate. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
- `flags?` (`{ unicode?: boolean, unicodeSets?: boolean }`) The flags to enable Unicode mode, and Unicode Set mode. | |
#### validator.validateFlags(source, start, end) | |
Validate a regular expression flags. | |
- **Parameters:** | |
- `source` (`string`) The source code to validate. | |
- `start?` (`number`) The start index in the source code. Default is `0`. | |
- `end?` (`number`) The end index in the source code. Default is `source.length`. | |
### RegExpVisitor | |
#### new RegExpVisitor(handlers) | |
- **Parameters:** | |
- `handlers` ([`RegExpVisitor.Handlers`]) The callbacks. | |
#### visitor.visit(ast) | |
Validate a regular expression literal. | |
- **Parameters:** | |
- `ast` ([`AST.Node`]) The AST to visit. | |
## π° Changelog | |
- [GitHub Releases](https://github.com/eslint-community/regexpp/releases) | |
## π» Contributing | |
Welcome contributing! | |
Please use GitHub's Issues/PRs. | |
### Development Tools | |
- `npm test` runs tests and measures coverage. | |
- `npm run build` compiles TypeScript source code to `index.js`, `index.js.map`, and `index.d.ts`. | |
- `npm run clean` removes the temporary files which are created by `npm test` and `npm run build`. | |
- `npm run lint` runs ESLint. | |
- `npm run update:test` updates test fixtures. | |
- `npm run update:ids` updates `src/unicode/ids.ts`. | |
- `npm run watch` runs tests with `--watch` option. | |
[`AST.Node`]: src/ast.ts#L4 | |
[`RegExpParser.Options`]: src/parser.ts#L743 | |
[`RegExpValidator.Options`]: src/validator.ts#L220 | |
[`RegExpVisitor.Handlers`]: src/visitor.ts#L291 | |