extra-parser 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -48,25 +48,33 @@ interface INodePattern<Token extends IToken = IToken, Node extends INode = INode
48
48
  (tokens: ReadonlyArray<Token>): Awaitable<INodePatternMatch<Node> | Falsy>
49
49
  }
50
50
 
51
- type MapSequenceToPatterns<Sequence extends ReadonlyArray<IToken | INode>> = {
51
+ type MapSequenceToPatterns<
52
+ Sequence extends ReadonlyArray<Token | Node>
53
+ , Token extends IToken = IToken
54
+ , Node extends INode = INode
55
+ > = {
52
56
  [Index in keyof Sequence]:
53
57
  [Sequence[Index]] extends [infer Element]
54
58
  ? (
55
- Element extends IToken
59
+ Element extends Token
56
60
  ? string
57
- : Element extends INode
58
- ? INodePattern<IToken, Element>
61
+ : Element extends Node
62
+ ? INodePattern<Token, Element>
59
63
  : never
60
64
  )
61
65
  : never
62
66
  }
63
67
 
64
- type MapSequenceToMatches<Sequence extends ReadonlyArray<IToken | INode>> = {
68
+ type MapSequenceToMatches<
69
+ Sequence extends ReadonlyArray<Token | Node>
70
+ , Token extends IToken = IToken
71
+ , Node extends INode = INode
72
+ > = {
65
73
  [Index in keyof Sequence]:
66
74
  [Sequence[Index]] extends [infer Element]
67
75
  ? (
68
76
  Element extends IToken
69
- ? IToken
77
+ ? Token
70
78
  : Element extends INode
71
79
  ? INodePatternMatch<Element>
72
80
  : never
@@ -110,7 +118,7 @@ function consumeToken<Token extends IToken = IToken>(
110
118
  ): Token | Falsy
111
119
  ```
112
120
 
113
- #### matchAnyOf
121
+ ### matchAnyOf
114
122
  ```ts
115
123
  function matchAnyOf<
116
124
  Token extends IToken = IToken
@@ -121,24 +129,32 @@ function matchAnyOf<
121
129
  ): Promise<INodePatternMatch<Node> | Falsy>
122
130
  ```
123
131
 
124
- #### matchSequence
132
+ ### matchSequence
125
133
  ```ts
126
- function matchSequence<Sequence extends ReadonlyArray<IToken | INode>>(
127
- patterns: MapSequenceToPatterns<Sequence>
128
- , tokens: ReadonlyArray<IToken>
129
- ): Promise<MapSequenceToMatches<Sequence> | Falsy>
134
+ function matchSequence<
135
+ Sequence extends ReadonlyArray<Token | Node>
136
+ , Token extends IToken = IToken
137
+ , Node extends INode = INode
138
+ >(
139
+ patterns: MapSequenceToPatterns<Sequence, Token, Node>
140
+ , tokens: ReadonlyArray<Token>
141
+ ): Promise<MapSequenceToMatches<Sequence, Token, Node> | Falsy>
130
142
  ```
131
143
 
132
- #### matchRepetitions
144
+ ### matchRepetitions
133
145
  ```ts
134
- function matchRepetitions<Sequence extends ReadonlyArray<IToken | INode>>(
135
- patterns: MapSequenceToPatterns<Sequence>
136
- , tokens: ReadonlyArray<IToken>
146
+ function matchRepetitions<
147
+ Sequence extends ReadonlyArray<Token | Node>
148
+ , Token extends IToken = IToken
149
+ , Node extends INode = INode
150
+ >(
151
+ patterns: MapSequenceToPatterns<Sequence, Token, Node>
152
+ , tokens: ReadonlyArray<Token>
137
153
  , options?: {
138
154
  minimumRepetitions?: number = 1
139
155
  maximumRepetitions?: number = Infinity
140
156
  }
141
- ): Promise<Flatten<Array<MapSequenceToMatches<Sequence>>> | Falsy>
157
+ ): Promise<Flatten<Array<MapSequenceToMatches<Sequence, Token, Node>>> | Falsy>
142
158
  ```
143
159
 
144
160
  ### createTokenPatternFromRegExp
@@ -1,7 +1,7 @@
1
1
  import { Falsy } from '@blackglory/prelude';
2
2
  import { Flatten } from 'hotypes';
3
3
  import { IToken, INode, MapSequenceToPatterns, MapSequenceToMatches } from './types';
4
- export declare function matchRepetitions<Sequence extends ReadonlyArray<IToken | INode>>(patterns: MapSequenceToPatterns<Sequence>, tokens: ReadonlyArray<IToken>, { minimumRepetitions, maximumRepetitions }?: {
4
+ export declare function matchRepetitions<Sequence extends ReadonlyArray<Token | Node>, Token extends IToken = IToken, Node extends INode = INode>(patterns: MapSequenceToPatterns<Sequence, Token, Node>, tokens: ReadonlyArray<Token>, { minimumRepetitions, maximumRepetitions }?: {
5
5
  minimumRepetitions?: number;
6
6
  maximumRepetitions?: number;
7
- }): Promise<Flatten<Array<MapSequenceToMatches<Sequence>>> | Falsy>;
7
+ }): Promise<Flatten<Array<MapSequenceToMatches<Sequence, Token, Node>>> | Falsy>;
@@ -1 +1 @@
1
- {"version":3,"file":"match-repetitions.js","sourceRoot":"","sources":["../src/match-repetitions.ts"],"names":[],"mappings":";;;AAAA,iDAAuE;AAGvE,qDAAgD;AAEzC,KAAK,UAAU,gBAAgB,CACpC,QAAyC,EACzC,MAA6B,EAC7B,EACE,kBAAkB,GAAG,CAAC,EACtB,kBAAkB,GAAG,QAAQ,KAI3B,EAAE;IAEN,IAAA,gBAAM,EAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,2CAA2C,CAAC,CAAA;IACzF,IAAA,gBAAM,EACJ,kBAAkB,IAAI,CAAC,EACvB,4DAA4D,CAC7D,CAAA;IACD,IAAA,gBAAM,EACJ,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,KAAK,QAAQ,EACvE,0DAA0D,CAC3D,CAAA;IACD,IAAA,gBAAM,EACJ,kBAAkB,IAAI,kBAAkB,EACxC,kFAAkF,CACnF,CAAA;IAED,MAAM,OAAO,GAA0C,EAAE,CAAA;IACzD,MAAM,aAAa,GAAG,IAAA,iBAAO,EAAC,MAAM,CAAC,CAAA;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAa,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5D,IAAI,IAAA,mBAAS,EAAC,OAAO,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SACxC;aAAM;YACL,OAAM;SACP;KACF;IAED,KAAK,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAa,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5D,IAAI,IAAA,mBAAS,EAAC,OAAO,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SACxC;aAAM;YACL,MAAK;SACN;KACF;IAED,OAAO,OAAO,CAAC,IAAI,EAAoD,CAAA;AACzE,CAAC;AAjDD,4CAiDC"}
1
+ {"version":3,"file":"match-repetitions.js","sourceRoot":"","sources":["../src/match-repetitions.ts"],"names":[],"mappings":";;;AAAA,iDAAuE;AAGvE,qDAAgD;AAEzC,KAAK,UAAU,gBAAgB,CAKpC,QAAsD,EACtD,MAA4B,EAC5B,EACE,kBAAkB,GAAG,CAAC,EACtB,kBAAkB,GAAG,QAAQ,KAI3B,EAAE;IAEN,IAAA,gBAAM,EAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,2CAA2C,CAAC,CAAA;IACzF,IAAA,gBAAM,EACJ,kBAAkB,IAAI,CAAC,EACvB,4DAA4D,CAC7D,CAAA;IACD,IAAA,gBAAM,EACJ,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,KAAK,QAAQ,EACvE,0DAA0D,CAC3D,CAAA;IACD,IAAA,gBAAM,EACJ,kBAAkB,IAAI,kBAAkB,EACxC,kFAAkF,CACnF,CAAA;IAED,MAAM,OAAO,GAAuD,EAAE,CAAA;IACtE,MAAM,aAAa,GAAG,IAAA,iBAAO,EAAC,MAAM,CAAC,CAAA;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAa,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5D,IAAI,IAAA,mBAAS,EAAC,OAAO,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SACxC;aAAM;YACL,OAAM;SACP;KACF;IAED,KAAK,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAa,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5D,IAAI,IAAA,mBAAS,EAAC,OAAO,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;SACxC;aAAM;YACL,MAAK;SACN;KACF;IAED,OAAO,OAAO,CAAC,IAAI,EAAiE,CAAA;AACtF,CAAC;AArDD,4CAqDC"}
@@ -1,6 +1,6 @@
1
1
  import { NonEmptyArray, Falsy } from '@blackglory/prelude';
2
2
  import { IToken, INode, INodePattern, MapSequenceToPatterns, MapSequenceToMatches } from './types';
3
- export declare function matchSequence<Sequence extends ReadonlyArray<IToken | INode>>(patterns: MapSequenceToPatterns<Sequence>, tokens: ReadonlyArray<IToken>): Promise<MapSequenceToMatches<Sequence> | Falsy>;
4
- declare type SubPatterns = [INodePattern<IToken, INode>, string] | NonEmptyArray<string> | NonEmptyArray<INodePattern<IToken, INode>>;
5
- export declare function splitPatterns<Sequence extends ReadonlyArray<IToken | INode>>(patterns: MapSequenceToPatterns<Sequence>): IterableIterator<SubPatterns>;
3
+ export declare function matchSequence<Sequence extends ReadonlyArray<Token | Node>, Token extends IToken = IToken, Node extends INode = INode>(patterns: MapSequenceToPatterns<Sequence, Token, Node>, tokens: ReadonlyArray<Token>): Promise<MapSequenceToMatches<Sequence, Token, Node> | Falsy>;
4
+ declare type SubPatterns<Token extends IToken = IToken, Node extends INode = INode> = [INodePattern<Token, Node>, string] | NonEmptyArray<string> | NonEmptyArray<INodePattern<Token, Node>>;
5
+ export declare function splitPatterns<Sequence extends ReadonlyArray<Token | Node>, Token extends IToken = IToken, Node extends INode = INode>(patterns: MapSequenceToPatterns<Sequence, Token, Node>): IterableIterator<SubPatterns<Token, Node>>;
6
6
  export {};
@@ -56,7 +56,7 @@ async function matchSequence(patterns, tokens) {
56
56
  const subMatches = await matchSequence(subPatterns, remainingTokens);
57
57
  if ((0, prelude_1.isntFalsy)(subMatches)) {
58
58
  const consumed = subMatches
59
- .map(match => {
59
+ .map((match) => {
60
60
  return 'consumed' in match
61
61
  ? match.consumed
62
62
  : 1;
@@ -1 +1 @@
1
- {"version":3,"file":"match-sequence.js","sourceRoot":"","sources":["../src/match-sequence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match-sequence.js","sourceRoot":"","sources":["../src/match-sequence.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -20,13 +20,13 @@ export interface ITokenPattern<Token extends IToken = IToken> {
20
20
  export interface INodePattern<Token extends IToken = IToken, Node extends INode = INode> {
21
21
  (tokens: ReadonlyArray<Token>): Awaitable<INodePatternMatch<Node> | Falsy>;
22
22
  }
23
- export declare type MapSequenceToPatterns<Sequence extends ReadonlyArray<IToken | INode>> = {
23
+ export declare type MapSequenceToPatterns<Sequence extends ReadonlyArray<Token | Node>, Token extends IToken = IToken, Node extends INode = INode> = {
24
24
  [Index in keyof Sequence]: [
25
25
  Sequence[Index]
26
- ] extends [infer Element] ? (Element extends IToken ? string : Element extends INode ? INodePattern<IToken, Element> : never) : never;
26
+ ] extends [infer Element] ? (Element extends Token ? string : Element extends Node ? INodePattern<Token, Element> : never) : never;
27
27
  };
28
- export declare type MapSequenceToMatches<Sequence extends ReadonlyArray<IToken | INode>> = {
28
+ export declare type MapSequenceToMatches<Sequence extends ReadonlyArray<Token | Node>, Token extends IToken = IToken, Node extends INode = INode> = {
29
29
  [Index in keyof Sequence]: [
30
30
  Sequence[Index]
31
- ] extends [infer Element] ? (Element extends IToken ? IToken : Element extends INode ? INodePatternMatch<Element> : never) : never;
31
+ ] extends [infer Element] ? (Element extends IToken ? Token : Element extends INode ? INodePatternMatch<Element> : never) : never;
32
32
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-parser",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "A functional parser toolkit",
5
5
  "keywords": [],
6
6
  "files": [
@@ -51,6 +51,7 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@blackglory/prelude": "^0.1.8",
54
+ "hotypes": "^0.5.1",
54
55
  "iterable-operator": "^2.3.0"
55
56
  }
56
57
  }