@zitterorg/fluffy-waddle
A regular expression parser for ECMAScript.
💿 Installation
$ npm install @zitterorg/fluffy-waddle
- require Node@^12.0.0 || ^14.0.0 || >=16.0.0.
📖 Usage
import {
AST,
RegExpParser,
RegExpValidator,
RegExpVisitor,
parseRegExpLiteral,
validateRegExpLiteral,
visitRegExpAST
} from "@zitterorg/fluffy-waddle"
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
🍻 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 toindex.js
,index.js.map
, andindex.d.ts
.npm run clean
removes the temporary files which are created bynpm test
andnpm run build
.npm run lint
runs ESLint.npm run update:test
updates test fixtures.npm run update:ids
updatessrc/unicode/ids.ts
.npm run watch
runs tests with--watch
option.