extra-parser 0.6.1 → 0.6.2
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 +30 -14
- package/lib/match-repetitions.d.ts +2 -2
- package/lib/match-repetitions.js.map +1 -1
- package/lib/match-sequence.d.ts +3 -3
- package/lib/match-sequence.js +1 -1
- package/lib/match-sequence.js.map +1 -1
- package/lib/types.d.ts +4 -4
- package/package.json +1 -1
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<
|
|
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
|
|
59
|
+
Element extends Token
|
|
56
60
|
? string
|
|
57
|
-
: Element extends
|
|
58
|
-
? INodePattern<
|
|
61
|
+
: Element extends Node
|
|
62
|
+
? INodePattern<Token, Element>
|
|
59
63
|
: never
|
|
60
64
|
)
|
|
61
65
|
: never
|
|
62
66
|
}
|
|
63
67
|
|
|
64
|
-
type MapSequenceToMatches<
|
|
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
|
-
?
|
|
77
|
+
? Token
|
|
70
78
|
: Element extends INode
|
|
71
79
|
? INodePatternMatch<Element>
|
|
72
80
|
: never
|
|
@@ -123,22 +131,30 @@ function matchAnyOf<
|
|
|
123
131
|
|
|
124
132
|
#### matchSequence
|
|
125
133
|
```ts
|
|
126
|
-
function matchSequence<
|
|
127
|
-
|
|
128
|
-
,
|
|
129
|
-
|
|
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
144
|
#### matchRepetitions
|
|
133
145
|
```ts
|
|
134
|
-
function matchRepetitions<
|
|
135
|
-
|
|
136
|
-
,
|
|
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<
|
|
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,
|
|
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"}
|
package/lib/match-sequence.d.ts
CHANGED
|
@@ -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<
|
|
4
|
-
declare type SubPatterns = [INodePattern<
|
|
5
|
-
export declare function splitPatterns<Sequence extends ReadonlyArray<
|
|
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 {};
|
package/lib/match-sequence.js
CHANGED
|
@@ -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":";;;AAAA,iDAO4B;AAC5B,yDAAkD;AASlD,mDAA8C;AAC9C,iDAA4C;AAWrC,KAAK,UAAU,aAAa,
|
|
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<
|
|
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
|
|
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<
|
|
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 ?
|
|
31
|
+
] extends [infer Element] ? (Element extends IToken ? Token : Element extends INode ? INodePatternMatch<Element> : never) : never;
|
|
32
32
|
};
|