File tree Expand file tree Collapse file tree 2 files changed +8
-15
lines changed Expand file tree Collapse file tree 2 files changed +8
-15
lines changed Original file line number Diff line number Diff line change 33// TODO: Create some parse errors in invalid cases
44// TODO: Parse normal captures in a typed tuple?
55
6+ type ReError < T extends string > = { type : T } ;
7+
68type Flag = 'd' | 'g' | 'i' | 'm' | 's' | 'u' | 'y' ;
79
810type FlagChecker < Fl extends string > =
911 Fl extends '' ? string
1012 : Fl extends `${Flag } ${infer rest } ` ? FlagChecker < rest >
11- : never ;
13+ : ReError < `Invalid flag used: ${ Fl } ` > ;
1214
13- export type RegExCaptureResult < RegexStr extends string > =
14- RegexStr extends `(?<${infer key } >${infer rest } `
15+ export type RegExCaptureResult < Re extends string > =
16+ Re extends `(?<${infer key } >${infer rest } `
1517 ? rest extends `${infer _ } )${infer rest } `
1618 ? rest extends `?${infer rest } ` | `*${infer rest } `
1719 ? { [ k in key ] ?: string } & RegExCaptureResult < rest >
1820 : { [ k in key ] : string } & RegExCaptureResult < rest >
19- : { [ k in key ] : string } & RegExCaptureResult < rest > // This should be an error
20- : RegexStr extends `${infer _ } (?${infer rest } `
21- ? rest extends string
22- ? RegExCaptureResult < `(?${rest } `>
23- : never
21+ : never
22+ : Re extends `${infer _ } (?${infer rest } `
23+ ? RegExCaptureResult < `(?${rest } `>
2424 : { } ;
2525
2626export type RegExExecResult < Re extends string > = {
Original file line number Diff line number Diff line change @@ -27,13 +27,6 @@ describe('TypedRegEx', () => {
2727 expect ( result ) . not . toBeNull ( ) ;
2828 expect ( result ?. name ) . toBe ( 'r' ) ;
2929 } ) ;
30-
31- xit ( 'should extract 0 or more (*) applied on capture groups' , ( ) => {
32- const r = TypedRegEx ( '^foo(?<name>\\w)(?<num>.*' , 'gi' ) ;
33- const result = r . captures ( 'foobar' ) ;
34- expect ( result ) . not . toBeNull ( ) ;
35- expect ( result ?. name ) . toBe ( 'r' ) ;
36- } ) ;
3730 } ) ;
3831
3932 describe ( '#test' , ( ) => {
You can’t perform that action at this time.
0 commit comments