Skip to content

Commit f6c2589

Browse files
author
Fabien
committed
In typescript definition file
- export interfaces - rename Regexp interface to AstRegexp to avoid confusion with Regexp - export generate and toRegExp functions - add the '?' kind to the SimpleQuantifier interface - make the 'to' parameter optional in RangeQuantifier
1 parent d06a00b commit f6c2589

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

index.d.ts

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
declare namespace Node {
1+
declare module 'regexp-tree/ast' {
2+
export type AstClass =
3+
| 'Char'
4+
| 'ClassRange'
5+
| 'CharacterClass'
6+
| 'Alternative'
7+
| 'Disjunction'
8+
| 'Group'
9+
| 'Backreference'
10+
| 'Repetition'
11+
| 'Quantifier'
12+
| 'Assertion'
13+
| 'RegExp';
14+
215
interface Base<T> {
316
type: T;
417
loc?: {
@@ -8,97 +21,97 @@ declare namespace Node {
821
};
922
}
1023

11-
interface SimpleChar extends Base<'Char'> {
24+
export interface SimpleChar extends Base<'Char'> {
1225
value: string;
1326
kind: 'simple';
1427
escaped?: true;
1528
}
1629

17-
interface SpecialChar extends Base<'Char'> {
30+
export interface SpecialChar extends Base<'Char'> {
1831
value: string;
1932
kind: 'meta' | 'control' | 'hex' | 'decimal' | 'oct' | 'unicode';
2033
}
2134

22-
type Char = SimpleChar | SpecialChar;
35+
export type Char = SimpleChar | SpecialChar;
2336

24-
interface ClassRange extends Base<'ClassRange'> {
37+
export interface ClassRange extends Base<'ClassRange'> {
2538
from: Char;
2639
to: Char;
2740
}
2841

29-
interface CharacterClass extends Base<'CharacterClass'> {
42+
export interface CharacterClass extends Base<'CharacterClass'> {
3043
negative?: true;
3144
expressions: (Char | ClassRange)[];
3245
}
3346

34-
interface Alternative extends Base<'Alternative'> {
47+
export interface Alternative extends Base<'Alternative'> {
3548
expressions: Expression[];
3649
}
3750

38-
interface Disjunction extends Base<'Disjunction'> {
51+
export interface Disjunction extends Base<'Disjunction'> {
3952
expressions: (Expression | null)[];
4053
}
4154

42-
interface CapturingGroup extends Base<'Group'> {
55+
export interface CapturingGroup extends Base<'Group'> {
4356
capturing: true;
4457
number: number;
4558
name?: string;
4659
expression: Expression | null;
4760
}
4861

49-
interface NoncapturingGroup extends Base<'Group'> {
62+
export interface NoncapturingGroup extends Base<'Group'> {
5063
capturing: false;
5164
expression: Expression | null;
5265
}
5366

54-
type Group = CapturingGroup | NoncapturingGroup;
67+
export type Group = CapturingGroup | NoncapturingGroup;
5568

56-
interface NumericBackreference extends Base<'Backreference'> {
69+
export interface NumericBackreference extends Base<'Backreference'> {
5770
kind: 'number';
5871
number: number;
5972
reference: number;
6073
}
6174

62-
interface NamedBackreference extends Base<'Backreference'> {
75+
export interface NamedBackreference extends Base<'Backreference'> {
6376
kind: 'name';
6477
number: number;
6578
reference: string;
6679
}
6780

68-
type Backreference = NumericBackreference | NamedBackreference;
81+
export type Backreference = NumericBackreference | NamedBackreference;
6982

70-
interface Repetition extends Base<'Repetition'> {
83+
export interface Repetition extends Base<'Repetition'> {
7184
expression: Expression;
7285
quantifier: Quantifier;
7386
}
7487

75-
interface SimpleQuantifier extends Base<'Quantifier'> {
76-
kind: '+' | '*';
88+
export interface SimpleQuantifier extends Base<'Quantifier'> {
89+
kind: '+' | '*' | '?';
7790
greedy: boolean;
7891
}
7992

80-
interface RangeQuantifier extends Base<'Quantifier'> {
93+
export interface RangeQuantifier extends Base<'Quantifier'> {
8194
kind: 'Range';
8295
from: number;
83-
to: number;
96+
to?: number;
8497
greedy: boolean;
8598
}
8699

87-
type Quantifier = SimpleQuantifier | RangeQuantifier;
100+
export type Quantifier = SimpleQuantifier | RangeQuantifier;
88101

89-
interface SimpleAssertion extends Base<'Assertion'> {
102+
export interface SimpleAssertion extends Base<'Assertion'> {
90103
kind: '^' | '$' | '\\b' | '\\B';
91104
}
92105

93-
interface LookaroundAssertion extends Base<'Assertion'> {
106+
export interface LookaroundAssertion extends Base<'Assertion'> {
94107
kind: 'Lookahead' | 'Lookbehind';
95108
negative?: true;
96109
assertion: Expression | null;
97110
}
98111

99-
type Assertion = SimpleAssertion | LookaroundAssertion;
112+
export type Assertion = SimpleAssertion | LookaroundAssertion;
100113

101-
type Expression =
114+
export type Expression =
102115
| Char
103116
| CharacterClass
104117
| Alternative
@@ -108,14 +121,21 @@ declare namespace Node {
108121
| Repetition
109122
| Assertion;
110123

111-
interface RegExp extends Base<'RegExp'> {
124+
export interface AstRegExp extends Base<'RegExp'> {
112125
body: Expression | null;
113126
flags: string;
114127
}
115128
}
116129

117-
interface ParserOptions {
118-
captureLocations?: boolean;
119-
}
130+
declare module 'regexp-tree' {
131+
import { AstRegExp } from 'regexp-tree/ast'
132+
interface ParserOptions {
133+
captureLocations?: boolean;
134+
}
135+
136+
export function parse(s: string | RegExp, options?: ParserOptions): AstRegExp;
137+
138+
export function generate(ast: AstRegExp): string;
120139

121-
export function parse(s: string | RegExp, options?: ParserOptions): Node.RegExp;
140+
export function toRegExp(regexp: string): RegExp;
141+
}

0 commit comments

Comments
 (0)