@renovatebot/good-enough-parser 1.1.24 → 2.0.0

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.
Files changed (219) hide show
  1. package/README.md +6 -6
  2. package/dist/cjs/index.d.ts +4 -4
  3. package/dist/cjs/index.js +7 -7
  4. package/dist/cjs/lang/groovy.d.ts +6 -6
  5. package/dist/cjs/lang/groovy.js +83 -83
  6. package/dist/cjs/lang/index.d.ts +20 -20
  7. package/dist/cjs/lang/index.js +56 -56
  8. package/dist/cjs/lang/index.js.map +1 -1
  9. package/dist/cjs/lang/python.d.ts +6 -6
  10. package/dist/cjs/lang/python.js +73 -73
  11. package/dist/cjs/lang/scala.d.ts +6 -6
  12. package/dist/cjs/lang/scala.js +71 -71
  13. package/dist/cjs/lang/starlark.d.ts +6 -6
  14. package/dist/cjs/lang/starlark.js +58 -58
  15. package/dist/cjs/lang/types.d.ts +6 -6
  16. package/dist/cjs/lang/types.js +2 -2
  17. package/dist/cjs/lexer/bracket.d.ts +6 -6
  18. package/dist/cjs/lexer/bracket.js +56 -57
  19. package/dist/cjs/lexer/bracket.js.map +1 -1
  20. package/dist/cjs/lexer/comment.d.ts +3 -3
  21. package/dist/cjs/lexer/comment.js +43 -44
  22. package/dist/cjs/lexer/comment.js.map +1 -1
  23. package/dist/cjs/lexer/index.d.ts +5 -5
  24. package/dist/cjs/lexer/index.js +154 -155
  25. package/dist/cjs/lexer/index.js.map +1 -1
  26. package/dist/cjs/lexer/number.d.ts +2 -2
  27. package/dist/cjs/lexer/number.js +17 -18
  28. package/dist/cjs/lexer/number.js.map +1 -1
  29. package/dist/cjs/lexer/operator.d.ts +2 -2
  30. package/dist/cjs/lexer/operator.js +23 -24
  31. package/dist/cjs/lexer/operator.js.map +1 -1
  32. package/dist/cjs/lexer/rules.d.ts +4 -4
  33. package/dist/cjs/lexer/rules.js +74 -74
  34. package/dist/cjs/lexer/rules.js.map +1 -1
  35. package/dist/cjs/lexer/string.d.ts +2 -2
  36. package/dist/cjs/lexer/string.js +180 -181
  37. package/dist/cjs/lexer/string.js.map +1 -1
  38. package/dist/cjs/lexer/symbol.d.ts +2 -2
  39. package/dist/cjs/lexer/symbol.js +17 -18
  40. package/dist/cjs/lexer/symbol.js.map +1 -1
  41. package/dist/cjs/lexer/token.d.ts +3 -3
  42. package/dist/cjs/lexer/token.js +63 -64
  43. package/dist/cjs/lexer/token.js.map +1 -1
  44. package/dist/cjs/lexer/types.d.ts +142 -142
  45. package/dist/cjs/lexer/types.js +2 -2
  46. package/dist/cjs/parser/cursor.d.ts +2 -2
  47. package/dist/cjs/parser/cursor.js +12 -13
  48. package/dist/cjs/parser/cursor.js.map +1 -1
  49. package/dist/cjs/parser/index.d.ts +3 -3
  50. package/dist/cjs/parser/index.js +19 -19
  51. package/dist/cjs/parser/tree.d.ts +4 -4
  52. package/dist/cjs/parser/tree.js +245 -246
  53. package/dist/cjs/parser/tree.js.map +1 -1
  54. package/dist/cjs/parser/types.d.ts +33 -33
  55. package/dist/cjs/parser/types.js +2 -2
  56. package/dist/cjs/query/builder.d.ts +144 -144
  57. package/dist/cjs/query/builder.d.ts.map +1 -1
  58. package/dist/cjs/query/builder.js +333 -332
  59. package/dist/cjs/query/builder.js.map +1 -1
  60. package/dist/cjs/query/handler.d.ts +2 -2
  61. package/dist/cjs/query/handler.js +9 -10
  62. package/dist/cjs/query/handler.js.map +1 -1
  63. package/dist/cjs/query/index.d.ts +2 -2
  64. package/dist/cjs/query/index.js +32 -32
  65. package/dist/cjs/query/matchers/abstract-matcher.d.ts +9 -9
  66. package/dist/cjs/query/matchers/abstract-matcher.js +36 -36
  67. package/dist/cjs/query/matchers/abstract-matcher.js.map +1 -1
  68. package/dist/cjs/query/matchers/alt-matcher.d.ts +10 -10
  69. package/dist/cjs/query/matchers/alt-matcher.js +33 -33
  70. package/dist/cjs/query/matchers/alt-matcher.js.map +1 -1
  71. package/dist/cjs/query/matchers/anchor-matcher.d.ts +17 -17
  72. package/dist/cjs/query/matchers/anchor-matcher.js +50 -50
  73. package/dist/cjs/query/matchers/anchor-matcher.js.map +1 -1
  74. package/dist/cjs/query/matchers/comment-matcher.d.ts +10 -10
  75. package/dist/cjs/query/matchers/comment-matcher.js +39 -39
  76. package/dist/cjs/query/matchers/comment-matcher.js.map +1 -1
  77. package/dist/cjs/query/matchers/index.d.ts +6 -6
  78. package/dist/cjs/query/matchers/index.js +22 -22
  79. package/dist/cjs/query/matchers/many-matcher.d.ts +13 -13
  80. package/dist/cjs/query/matchers/many-matcher.js +61 -61
  81. package/dist/cjs/query/matchers/many-matcher.js.map +1 -1
  82. package/dist/cjs/query/matchers/num-matcher.d.ts +8 -8
  83. package/dist/cjs/query/matchers/num-matcher.js +34 -34
  84. package/dist/cjs/query/matchers/num-matcher.js.map +1 -1
  85. package/dist/cjs/query/matchers/op-matcher.d.ts +8 -8
  86. package/dist/cjs/query/matchers/op-matcher.js +34 -34
  87. package/dist/cjs/query/matchers/op-matcher.js.map +1 -1
  88. package/dist/cjs/query/matchers/seq-matcher.d.ts +14 -14
  89. package/dist/cjs/query/matchers/seq-matcher.js +76 -76
  90. package/dist/cjs/query/matchers/seq-matcher.js.map +1 -1
  91. package/dist/cjs/query/matchers/str-matcher.d.ts +38 -38
  92. package/dist/cjs/query/matchers/str-matcher.js +108 -108
  93. package/dist/cjs/query/matchers/str-matcher.js.map +1 -1
  94. package/dist/cjs/query/matchers/sym-matcher.d.ts +8 -8
  95. package/dist/cjs/query/matchers/sym-matcher.js +34 -34
  96. package/dist/cjs/query/matchers/sym-matcher.js.map +1 -1
  97. package/dist/cjs/query/matchers/tree-matcher.d.ts +23 -23
  98. package/dist/cjs/query/matchers/tree-matcher.js +121 -121
  99. package/dist/cjs/query/matchers/tree-matcher.js.map +1 -1
  100. package/dist/cjs/query/options.d.ts +10 -10
  101. package/dist/cjs/query/options.js +148 -149
  102. package/dist/cjs/query/options.js.map +1 -1
  103. package/dist/cjs/query/regex.d.ts +1 -1
  104. package/dist/cjs/query/regex.js +12 -13
  105. package/dist/cjs/query/regex.js.map +1 -1
  106. package/dist/cjs/query/types.d.ts +100 -100
  107. package/dist/cjs/query/types.d.ts.map +1 -1
  108. package/dist/cjs/query/types.js +2 -2
  109. package/dist/cjs/util/clone.d.ts +1 -1
  110. package/dist/cjs/util/clone.js +5 -5
  111. package/dist/cjs/util/regex.d.ts +1 -1
  112. package/dist/cjs/util/regex.js +6 -7
  113. package/dist/cjs/util/regex.js.map +1 -1
  114. package/dist/esm/index.d.ts +4 -4
  115. package/dist/esm/index.js +8 -8
  116. package/dist/esm/lang/groovy.d.ts +6 -6
  117. package/dist/esm/lang/groovy.js +80 -80
  118. package/dist/esm/lang/index.d.ts +20 -20
  119. package/dist/esm/lang/index.js +37 -37
  120. package/dist/esm/lang/python.d.ts +6 -6
  121. package/dist/esm/lang/python.js +70 -70
  122. package/dist/esm/lang/scala.d.ts +6 -6
  123. package/dist/esm/lang/scala.js +68 -68
  124. package/dist/esm/lang/starlark.d.ts +6 -6
  125. package/dist/esm/lang/starlark.js +55 -55
  126. package/dist/esm/lang/types.d.ts +6 -6
  127. package/dist/esm/lang/types.js +1 -1
  128. package/dist/esm/lexer/bracket.d.ts +6 -6
  129. package/dist/esm/lexer/bracket.js +49 -49
  130. package/dist/esm/lexer/bracket.js.map +1 -1
  131. package/dist/esm/lexer/comment.d.ts +3 -3
  132. package/dist/esm/lexer/comment.js +39 -39
  133. package/dist/esm/lexer/comment.js.map +1 -1
  134. package/dist/esm/lexer/index.d.ts +5 -5
  135. package/dist/esm/lexer/index.js +136 -136
  136. package/dist/esm/lexer/index.js.map +1 -1
  137. package/dist/esm/lexer/number.d.ts +2 -2
  138. package/dist/esm/lexer/number.js +14 -14
  139. package/dist/esm/lexer/operator.d.ts +2 -2
  140. package/dist/esm/lexer/operator.js +20 -20
  141. package/dist/esm/lexer/rules.d.ts +4 -4
  142. package/dist/esm/lexer/rules.js +69 -69
  143. package/dist/esm/lexer/rules.js.map +1 -1
  144. package/dist/esm/lexer/string.d.ts +2 -2
  145. package/dist/esm/lexer/string.js +177 -177
  146. package/dist/esm/lexer/string.js.map +1 -1
  147. package/dist/esm/lexer/symbol.d.ts +2 -2
  148. package/dist/esm/lexer/symbol.js +14 -14
  149. package/dist/esm/lexer/token.d.ts +3 -3
  150. package/dist/esm/lexer/token.js +60 -60
  151. package/dist/esm/lexer/token.js.map +1 -1
  152. package/dist/esm/lexer/types.d.ts +142 -142
  153. package/dist/esm/lexer/types.js +1 -1
  154. package/dist/esm/parser/cursor.d.ts +2 -2
  155. package/dist/esm/parser/cursor.js +9 -9
  156. package/dist/esm/parser/index.d.ts +3 -3
  157. package/dist/esm/parser/index.js +3 -3
  158. package/dist/esm/parser/tree.d.ts +4 -4
  159. package/dist/esm/parser/tree.js +241 -241
  160. package/dist/esm/parser/tree.js.map +1 -1
  161. package/dist/esm/parser/types.d.ts +33 -33
  162. package/dist/esm/parser/types.js +1 -1
  163. package/dist/esm/query/builder.d.ts +144 -144
  164. package/dist/esm/query/builder.d.ts.map +1 -1
  165. package/dist/esm/query/builder.js +305 -304
  166. package/dist/esm/query/builder.js.map +1 -1
  167. package/dist/esm/query/handler.d.ts +2 -2
  168. package/dist/esm/query/handler.js +6 -6
  169. package/dist/esm/query/index.d.ts +2 -2
  170. package/dist/esm/query/index.js +2 -2
  171. package/dist/esm/query/matchers/abstract-matcher.d.ts +9 -9
  172. package/dist/esm/query/matchers/abstract-matcher.js +32 -32
  173. package/dist/esm/query/matchers/abstract-matcher.js.map +1 -1
  174. package/dist/esm/query/matchers/alt-matcher.d.ts +10 -10
  175. package/dist/esm/query/matchers/alt-matcher.js +29 -29
  176. package/dist/esm/query/matchers/alt-matcher.js.map +1 -1
  177. package/dist/esm/query/matchers/anchor-matcher.d.ts +17 -17
  178. package/dist/esm/query/matchers/anchor-matcher.js +44 -44
  179. package/dist/esm/query/matchers/anchor-matcher.js.map +1 -1
  180. package/dist/esm/query/matchers/comment-matcher.d.ts +10 -10
  181. package/dist/esm/query/matchers/comment-matcher.js +35 -35
  182. package/dist/esm/query/matchers/comment-matcher.js.map +1 -1
  183. package/dist/esm/query/matchers/index.d.ts +6 -6
  184. package/dist/esm/query/matchers/index.js +6 -6
  185. package/dist/esm/query/matchers/many-matcher.d.ts +13 -13
  186. package/dist/esm/query/matchers/many-matcher.js +57 -57
  187. package/dist/esm/query/matchers/many-matcher.js.map +1 -1
  188. package/dist/esm/query/matchers/num-matcher.d.ts +8 -8
  189. package/dist/esm/query/matchers/num-matcher.js +30 -30
  190. package/dist/esm/query/matchers/num-matcher.js.map +1 -1
  191. package/dist/esm/query/matchers/op-matcher.d.ts +8 -8
  192. package/dist/esm/query/matchers/op-matcher.js +30 -30
  193. package/dist/esm/query/matchers/op-matcher.js.map +1 -1
  194. package/dist/esm/query/matchers/seq-matcher.d.ts +14 -14
  195. package/dist/esm/query/matchers/seq-matcher.js +72 -72
  196. package/dist/esm/query/matchers/seq-matcher.js.map +1 -1
  197. package/dist/esm/query/matchers/str-matcher.d.ts +38 -38
  198. package/dist/esm/query/matchers/str-matcher.js +102 -102
  199. package/dist/esm/query/matchers/str-matcher.js.map +1 -1
  200. package/dist/esm/query/matchers/sym-matcher.d.ts +8 -8
  201. package/dist/esm/query/matchers/sym-matcher.js +30 -30
  202. package/dist/esm/query/matchers/sym-matcher.js.map +1 -1
  203. package/dist/esm/query/matchers/tree-matcher.d.ts +23 -23
  204. package/dist/esm/query/matchers/tree-matcher.js +117 -117
  205. package/dist/esm/query/matchers/tree-matcher.js.map +1 -1
  206. package/dist/esm/query/options.d.ts +10 -10
  207. package/dist/esm/query/options.js +139 -139
  208. package/dist/esm/query/options.js.map +1 -1
  209. package/dist/esm/query/regex.d.ts +1 -1
  210. package/dist/esm/query/regex.js +9 -9
  211. package/dist/esm/query/regex.js.map +1 -1
  212. package/dist/esm/query/types.d.ts +100 -100
  213. package/dist/esm/query/types.d.ts.map +1 -1
  214. package/dist/esm/query/types.js +1 -1
  215. package/dist/esm/util/clone.d.ts +1 -1
  216. package/dist/esm/util/clone.js +1 -1
  217. package/dist/esm/util/regex.d.ts +1 -1
  218. package/dist/esm/util/regex.js +3 -3
  219. package/package.json +42 -46
@@ -1,333 +1,334 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildRoot = exports.str = exports.StrBuilder = exports.tree = exports.TreeBuilder = exports.alt = exports.AltBuilder = exports.opt = exports.many = exports.ManyBuilder = exports.num = exports.NumBuilder = exports.comment = exports.CommentBuilder = exports.op = exports.OpBuilder = exports.sym = exports.SymBuilder = exports.join = exports.SeqBuilder = exports.handler = exports.VoidBuilder = exports.begin = exports.EndBuilder = exports.BeginBuilder = void 0;
4
- const matchers_1 = require("./matchers");
5
- const anchor_matcher_1 = require("./matchers/anchor-matcher");
6
- const comment_matcher_1 = require("./matchers/comment-matcher");
7
- const num_matcher_1 = require("./matchers/num-matcher");
8
- const str_matcher_1 = require("./matchers/str-matcher");
9
- const tree_matcher_1 = require("./matchers/tree-matcher");
10
- const options_1 = require("./options");
11
- const regex_1 = require("./regex");
12
- class TerminalBuilder {
13
- handler(fn) {
14
- const voidMatcher = new VoidBuilder(fn);
15
- const builder = new SeqBuilder(this, voidMatcher);
16
- return builder;
17
- }
18
- }
19
- class AbstractBuilder extends TerminalBuilder {
20
- sym(arg1, arg2) {
21
- const opts = (0, options_1.coerceSymOptions)(arg1, arg2);
22
- const builder = new SymBuilder(opts);
23
- return new SeqBuilder(this, builder);
24
- }
25
- op(arg1, arg2) {
26
- const opts = (0, options_1.coerceOpOptions)(arg1, arg2);
27
- const builder = new OpBuilder(opts);
28
- return new SeqBuilder(this, builder);
29
- }
30
- comment(arg1, arg2) {
31
- const opts = (0, options_1.coerceCommentOptions)(arg1, arg2);
32
- const builder = new CommentBuilder(opts);
33
- return new SeqBuilder(this, builder);
34
- }
35
- num(arg1, arg2) {
36
- const opts = (0, options_1.coerceNumOptions)(arg1, arg2);
37
- const builder = new NumBuilder(opts);
38
- return new SeqBuilder(this, builder);
39
- }
40
- many(arg1, arg2, arg3) {
41
- const opts = (0, options_1.coerceManyOptions)(arg1, arg2, arg3);
42
- const builder = new ManyBuilder(opts);
43
- return new SeqBuilder(this, builder);
44
- }
45
- opt(innerBuilder) {
46
- const opts = (0, options_1.coerceManyOptions)(innerBuilder, 0, 1);
47
- const builder = new ManyBuilder(opts);
48
- return new SeqBuilder(this, builder);
49
- }
50
- alt(...alts) {
51
- const builder = new AltBuilder(alts);
52
- return new SeqBuilder(this, builder);
53
- }
54
- tree(arg1) {
55
- const opts = (0, options_1.coerceTreeOptions)(arg1);
56
- const builder = new TreeBuilder(opts);
57
- return new SeqBuilder(this, builder);
58
- }
59
- str(arg1, arg2) {
60
- const opts = (0, options_1.coerceStrOptions)(arg1, arg2);
61
- const builder = new StrBuilder(opts);
62
- return new SeqBuilder(this, builder);
63
- }
64
- end() {
65
- return new EndBuilder(this);
66
- }
67
- join(other) {
68
- const builder = new SeqBuilder(this, other);
69
- return builder;
70
- }
71
- }
72
- // Anchors
73
- class BeginBuilder extends AbstractBuilder {
74
- build() {
75
- return new anchor_matcher_1.BeginMatcher();
76
- }
77
- }
78
- exports.BeginBuilder = BeginBuilder;
79
- class EndBuilder extends TerminalBuilder {
80
- constructor(builder) {
81
- super();
82
- this.builder = builder;
83
- }
84
- build() {
85
- const matcher = this.builder.build();
86
- const matchers = matcher instanceof matchers_1.SeqMatcher ? matcher.seq : [matcher];
87
- matchers.push(new anchor_matcher_1.EndMatcher());
88
- return new matchers_1.SeqMatcher({ matchers });
89
- }
90
- }
91
- exports.EndBuilder = EndBuilder;
92
- function begin() {
93
- return new BeginBuilder();
94
- }
95
- exports.begin = begin;
96
- class VoidBuilder extends AbstractBuilder {
97
- constructor(fn) {
98
- super();
99
- this.fn = fn;
100
- }
101
- build() {
102
- return new anchor_matcher_1.VoidMatcher(this.fn);
103
- }
104
- }
105
- exports.VoidBuilder = VoidBuilder;
106
- function handler(fn) {
107
- return new VoidBuilder(fn);
108
- }
109
- exports.handler = handler;
110
- // Sequence
111
- class SeqBuilder extends AbstractBuilder {
112
- constructor(prev, next) {
113
- super();
114
- const prevSeq = prev instanceof SeqBuilder
115
- ? prev.builders
116
- : [prev];
117
- const nextSeq = next instanceof SeqBuilder
118
- ? next.builders
119
- : [next];
120
- this.builders = [...prevSeq, ...nextSeq];
121
- }
122
- build() {
123
- const matchers = this.builders.map((builder) => builder.build());
124
- return new matchers_1.SeqMatcher({ matchers });
125
- }
126
- }
127
- exports.SeqBuilder = SeqBuilder;
128
- function join(first, second, ...others) {
129
- const seq = new SeqBuilder(first, second);
130
- if (!others.length) {
131
- return seq;
132
- }
133
- return others.reduce((res, query) => {
134
- return res.join(query);
135
- }, seq);
136
- }
137
- exports.join = join;
138
- // Symbols
139
- class SymBuilder extends AbstractBuilder {
140
- constructor(opts) {
141
- super();
142
- this.opts = opts;
143
- }
144
- build() {
145
- return new matchers_1.SymMatcher(this.opts);
146
- }
147
- }
148
- exports.SymBuilder = SymBuilder;
149
- function sym(arg1, arg2) {
150
- const opts = (0, options_1.coerceSymOptions)(arg1, arg2);
151
- return new SymBuilder(opts);
152
- }
153
- exports.sym = sym;
154
- // Operators
155
- class OpBuilder extends AbstractBuilder {
156
- constructor(opts) {
157
- super();
158
- this.opts = opts;
159
- }
160
- build() {
161
- return new matchers_1.OpMatcher(this.opts);
162
- }
163
- }
164
- exports.OpBuilder = OpBuilder;
165
- function op(arg1, arg2) {
166
- const opts = (0, options_1.coerceOpOptions)(arg1, arg2);
167
- return new OpBuilder(opts);
168
- }
169
- exports.op = op;
170
- // Comments
171
- class CommentBuilder extends AbstractBuilder {
172
- constructor(opts) {
173
- super();
174
- this.opts = opts;
175
- }
176
- build() {
177
- return new comment_matcher_1.CommentMatcher(this.opts);
178
- }
179
- }
180
- exports.CommentBuilder = CommentBuilder;
181
- function comment(arg1, arg2) {
182
- const opts = (0, options_1.coerceCommentOptions)(arg1, arg2);
183
- return new CommentBuilder(opts);
184
- }
185
- exports.comment = comment;
186
- // Numbers
187
- class NumBuilder extends AbstractBuilder {
188
- constructor(opts) {
189
- super();
190
- this.opts = opts;
191
- }
192
- build() {
193
- return new num_matcher_1.NumMatcher(this.opts);
194
- }
195
- }
196
- exports.NumBuilder = NumBuilder;
197
- function num(arg1, arg2) {
198
- const opts = (0, options_1.coerceNumOptions)(arg1, arg2);
199
- return new NumBuilder(opts);
200
- }
201
- exports.num = num;
202
- // Repetitive patterns
203
- class ManyBuilder extends AbstractBuilder {
204
- constructor(opts) {
205
- super();
206
- this.opts = opts;
207
- }
208
- build() {
209
- const matcher = this.opts.builder.build();
210
- return new matchers_1.ManyMatcher({ ...this.opts, matcher });
211
- }
212
- }
213
- exports.ManyBuilder = ManyBuilder;
214
- function many(arg1, arg2, arg3) {
215
- const opts = (0, options_1.coerceManyOptions)(arg1, arg2, arg3);
216
- return new ManyBuilder(opts);
217
- }
218
- exports.many = many;
219
- function opt(builder) {
220
- const opts = (0, options_1.coerceManyOptions)(builder, 0, 1);
221
- return new ManyBuilder(opts);
222
- }
223
- exports.opt = opt;
224
- // Alternatives
225
- class AltBuilder extends AbstractBuilder {
226
- constructor(builders) {
227
- super();
228
- this.builders = builders;
229
- }
230
- build() {
231
- const matchers = this.builders.map((alt) => alt.build());
232
- return new matchers_1.AltMatcher({ matchers });
233
- }
234
- }
235
- exports.AltBuilder = AltBuilder;
236
- function alt(...builders) {
237
- return new AltBuilder(builders);
238
- }
239
- exports.alt = alt;
240
- // Trees
241
- class TreeBuilder extends AbstractBuilder {
242
- constructor(opts) {
243
- super();
244
- this.opts = opts;
245
- }
246
- build() {
247
- const builderOpts = this.opts;
248
- const matcher = builderOpts.search ? builderOpts.search.build() : null;
249
- const matcherOpts = { ...builderOpts, matcher };
250
- return new tree_matcher_1.TreeMatcher(matcherOpts);
251
- }
252
- }
253
- exports.TreeBuilder = TreeBuilder;
254
- function tree(arg1) {
255
- const opts = (0, options_1.coerceTreeOptions)(arg1);
256
- return new TreeBuilder(opts);
257
- }
258
- exports.tree = tree;
259
- // Strings
260
- class StrBuilder extends AbstractBuilder {
261
- constructor(opts) {
262
- super();
263
- this.opts = opts;
264
- }
265
- build() {
266
- var _a, _b, _c, _d, _e, _f;
267
- if (this.opts.type === 'str-content') {
268
- return new str_matcher_1.StrNodeMatcher({
269
- matchers: [
270
- new str_matcher_1.StrContentMatcher({
271
- value: (_a = this.opts.match) !== null && _a !== void 0 ? _a : null,
272
- handler: (_b = this.opts.handler) !== null && _b !== void 0 ? _b : null,
273
- }),
274
- ],
275
- preHandler: null,
276
- postHandler: null,
277
- });
278
- }
279
- if (this.opts.match) {
280
- const matchers = [];
281
- this.opts.match.forEach((m) => {
282
- if (typeof m === 'string' || (0, regex_1.isRegex)(m)) {
283
- const contentMatcher = new str_matcher_1.StrContentMatcher({
284
- value: m,
285
- handler: null,
286
- });
287
- matchers.push(contentMatcher);
288
- }
289
- else if (m instanceof StrBuilder) {
290
- const childStrMatcher = m.build();
291
- if (childStrMatcher.matchers) {
292
- matchers.push(...childStrMatcher.matchers);
293
- }
294
- }
295
- else if (m instanceof str_matcher_1.StrTplMatcher) {
296
- matchers.push(m);
297
- }
298
- else {
299
- const tplMatcher = new str_matcher_1.StrTplMatcher({
300
- matcher: m.build(),
301
- preHandler: null,
302
- postHandler: null,
303
- });
304
- matchers.push(tplMatcher);
305
- }
306
- });
307
- return new str_matcher_1.StrNodeMatcher({
308
- matchers: matchers,
309
- preHandler: (_c = this.opts.preHandler) !== null && _c !== void 0 ? _c : null,
310
- postHandler: (_d = this.opts.postHandler) !== null && _d !== void 0 ? _d : null,
311
- });
312
- }
313
- return new str_matcher_1.StrNodeMatcher({
314
- matchers: null,
315
- preHandler: (_e = this.opts.preHandler) !== null && _e !== void 0 ? _e : null,
316
- postHandler: (_f = this.opts.postHandler) !== null && _f !== void 0 ? _f : null,
317
- });
318
- }
319
- }
320
- exports.StrBuilder = StrBuilder;
321
- function str(arg1, arg2) {
322
- const opts = (0, options_1.coerceStrOptions)(arg1, arg2);
323
- return new StrBuilder(opts);
324
- }
325
- exports.str = str;
326
- function buildRoot(builder) {
327
- const matcher = builder.build();
328
- return matcher instanceof tree_matcher_1.TreeMatcher && matcher.type === 'root-tree'
329
- ? matcher
330
- : new tree_matcher_1.TreeMatcher({ matcher, type: 'root-tree' });
331
- }
332
- exports.buildRoot = buildRoot;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StrBuilder = exports.TreeBuilder = exports.AltBuilder = exports.ManyBuilder = exports.NumBuilder = exports.CommentBuilder = exports.OpBuilder = exports.SymBuilder = exports.SeqBuilder = exports.VoidBuilder = exports.EndBuilder = exports.BeginBuilder = void 0;
4
+ exports.begin = begin;
5
+ exports.handler = handler;
6
+ exports.join = join;
7
+ exports.sym = sym;
8
+ exports.op = op;
9
+ exports.comment = comment;
10
+ exports.num = num;
11
+ exports.many = many;
12
+ exports.opt = opt;
13
+ exports.alt = alt;
14
+ exports.tree = tree;
15
+ exports.str = str;
16
+ exports.buildRoot = buildRoot;
17
+ const matchers_1 = require("./matchers");
18
+ const anchor_matcher_1 = require("./matchers/anchor-matcher");
19
+ const comment_matcher_1 = require("./matchers/comment-matcher");
20
+ const num_matcher_1 = require("./matchers/num-matcher");
21
+ const str_matcher_1 = require("./matchers/str-matcher");
22
+ const tree_matcher_1 = require("./matchers/tree-matcher");
23
+ const options_1 = require("./options");
24
+ const regex_1 = require("./regex");
25
+ class TerminalBuilder {
26
+ handler(fn) {
27
+ const voidMatcher = new VoidBuilder(fn);
28
+ const builder = new SeqBuilder(this, voidMatcher);
29
+ return builder;
30
+ }
31
+ }
32
+ class AbstractBuilder extends TerminalBuilder {
33
+ sym(arg1, arg2) {
34
+ const opts = (0, options_1.coerceSymOptions)(arg1, arg2);
35
+ const builder = new SymBuilder(opts);
36
+ return new SeqBuilder(this, builder);
37
+ }
38
+ op(arg1, arg2) {
39
+ const opts = (0, options_1.coerceOpOptions)(arg1, arg2);
40
+ const builder = new OpBuilder(opts);
41
+ return new SeqBuilder(this, builder);
42
+ }
43
+ comment(arg1, arg2) {
44
+ const opts = (0, options_1.coerceCommentOptions)(arg1, arg2);
45
+ const builder = new CommentBuilder(opts);
46
+ return new SeqBuilder(this, builder);
47
+ }
48
+ num(arg1, arg2) {
49
+ const opts = (0, options_1.coerceNumOptions)(arg1, arg2);
50
+ const builder = new NumBuilder(opts);
51
+ return new SeqBuilder(this, builder);
52
+ }
53
+ many(arg1, arg2, arg3) {
54
+ const opts = (0, options_1.coerceManyOptions)(arg1, arg2, arg3);
55
+ const builder = new ManyBuilder(opts);
56
+ return new SeqBuilder(this, builder);
57
+ }
58
+ opt(innerBuilder) {
59
+ const opts = (0, options_1.coerceManyOptions)(innerBuilder, 0, 1);
60
+ const builder = new ManyBuilder(opts);
61
+ return new SeqBuilder(this, builder);
62
+ }
63
+ alt(...alts) {
64
+ const builder = new AltBuilder(alts);
65
+ return new SeqBuilder(this, builder);
66
+ }
67
+ tree(arg1) {
68
+ const opts = (0, options_1.coerceTreeOptions)(arg1);
69
+ const builder = new TreeBuilder(opts);
70
+ return new SeqBuilder(this, builder);
71
+ }
72
+ str(arg1, arg2) {
73
+ const opts = (0, options_1.coerceStrOptions)(arg1, arg2);
74
+ const builder = new StrBuilder(opts);
75
+ return new SeqBuilder(this, builder);
76
+ }
77
+ end() {
78
+ return new EndBuilder(this);
79
+ }
80
+ join(other) {
81
+ const builder = new SeqBuilder(this, other);
82
+ return builder;
83
+ }
84
+ }
85
+ // Anchors
86
+ class BeginBuilder extends AbstractBuilder {
87
+ build() {
88
+ return new anchor_matcher_1.BeginMatcher();
89
+ }
90
+ }
91
+ exports.BeginBuilder = BeginBuilder;
92
+ class EndBuilder extends TerminalBuilder {
93
+ constructor(builder) {
94
+ super();
95
+ this.builder = builder;
96
+ }
97
+ build() {
98
+ const matcher = this.builder.build();
99
+ const matchers = matcher instanceof matchers_1.SeqMatcher ? matcher.seq : [matcher];
100
+ matchers.push(new anchor_matcher_1.EndMatcher());
101
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
102
+ return new matchers_1.SeqMatcher({ matchers });
103
+ }
104
+ }
105
+ exports.EndBuilder = EndBuilder;
106
+ function begin() {
107
+ return new BeginBuilder();
108
+ }
109
+ class VoidBuilder extends AbstractBuilder {
110
+ constructor(fn) {
111
+ super();
112
+ this.fn = fn;
113
+ }
114
+ build() {
115
+ return new anchor_matcher_1.VoidMatcher(this.fn);
116
+ }
117
+ }
118
+ exports.VoidBuilder = VoidBuilder;
119
+ function handler(fn) {
120
+ return new VoidBuilder(fn);
121
+ }
122
+ // Sequence
123
+ class SeqBuilder extends AbstractBuilder {
124
+ constructor(prev, next) {
125
+ super();
126
+ const prevSeq = prev instanceof SeqBuilder
127
+ ? prev.builders
128
+ : [prev];
129
+ const nextSeq = next instanceof SeqBuilder
130
+ ? next.builders
131
+ : [next];
132
+ this.builders = [...prevSeq, ...nextSeq];
133
+ }
134
+ build() {
135
+ const matchers = this.builders.map((builder) => builder.build());
136
+ return new matchers_1.SeqMatcher({ matchers });
137
+ }
138
+ }
139
+ exports.SeqBuilder = SeqBuilder;
140
+ function join(first, second, ...others) {
141
+ const seq = new SeqBuilder(first, second);
142
+ if (!others.length) {
143
+ return seq;
144
+ }
145
+ return others.reduce((res, query) => {
146
+ return res.join(query);
147
+ }, seq);
148
+ }
149
+ // Symbols
150
+ class SymBuilder extends AbstractBuilder {
151
+ constructor(opts) {
152
+ super();
153
+ this.opts = opts;
154
+ }
155
+ build() {
156
+ return new matchers_1.SymMatcher(this.opts);
157
+ }
158
+ }
159
+ exports.SymBuilder = SymBuilder;
160
+ function sym(arg1, arg2) {
161
+ const opts = (0, options_1.coerceSymOptions)(arg1, arg2);
162
+ return new SymBuilder(opts);
163
+ }
164
+ // Operators
165
+ class OpBuilder extends AbstractBuilder {
166
+ constructor(opts) {
167
+ super();
168
+ this.opts = opts;
169
+ }
170
+ build() {
171
+ return new matchers_1.OpMatcher(this.opts);
172
+ }
173
+ }
174
+ exports.OpBuilder = OpBuilder;
175
+ function op(arg1, arg2) {
176
+ const opts = (0, options_1.coerceOpOptions)(arg1, arg2);
177
+ return new OpBuilder(opts);
178
+ }
179
+ // Comments
180
+ class CommentBuilder extends AbstractBuilder {
181
+ constructor(opts) {
182
+ super();
183
+ this.opts = opts;
184
+ }
185
+ build() {
186
+ return new comment_matcher_1.CommentMatcher(this.opts);
187
+ }
188
+ }
189
+ exports.CommentBuilder = CommentBuilder;
190
+ function comment(arg1, arg2) {
191
+ const opts = (0, options_1.coerceCommentOptions)(arg1, arg2);
192
+ return new CommentBuilder(opts);
193
+ }
194
+ // Numbers
195
+ class NumBuilder extends AbstractBuilder {
196
+ constructor(opts) {
197
+ super();
198
+ this.opts = opts;
199
+ }
200
+ build() {
201
+ return new num_matcher_1.NumMatcher(this.opts);
202
+ }
203
+ }
204
+ exports.NumBuilder = NumBuilder;
205
+ function num(arg1, arg2) {
206
+ const opts = (0, options_1.coerceNumOptions)(arg1, arg2);
207
+ return new NumBuilder(opts);
208
+ }
209
+ // Repetitive patterns
210
+ class ManyBuilder extends AbstractBuilder {
211
+ constructor(opts) {
212
+ super();
213
+ this.opts = opts;
214
+ }
215
+ build() {
216
+ const matcher = this.opts.builder.build();
217
+ return new matchers_1.ManyMatcher({ ...this.opts, matcher });
218
+ }
219
+ }
220
+ exports.ManyBuilder = ManyBuilder;
221
+ function many(arg1, arg2, arg3) {
222
+ const opts = (0, options_1.coerceManyOptions)(arg1, arg2, arg3);
223
+ return new ManyBuilder(opts);
224
+ }
225
+ function opt(builder) {
226
+ const opts = (0, options_1.coerceManyOptions)(builder, 0, 1);
227
+ return new ManyBuilder(opts);
228
+ }
229
+ // Alternatives
230
+ class AltBuilder extends AbstractBuilder {
231
+ constructor(builders) {
232
+ super();
233
+ this.builders = builders;
234
+ }
235
+ build() {
236
+ const matchers = this.builders.map((alt) => alt.build());
237
+ return new matchers_1.AltMatcher({ matchers });
238
+ }
239
+ }
240
+ exports.AltBuilder = AltBuilder;
241
+ function alt(...builders) {
242
+ return new AltBuilder(builders);
243
+ }
244
+ // Trees
245
+ class TreeBuilder extends AbstractBuilder {
246
+ constructor(opts) {
247
+ super();
248
+ this.opts = opts;
249
+ }
250
+ build() {
251
+ const builderOpts = this.opts;
252
+ const matcher = builderOpts.search ? builderOpts.search.build() : null;
253
+ const matcherOpts = { ...builderOpts, matcher };
254
+ return new tree_matcher_1.TreeMatcher(matcherOpts);
255
+ }
256
+ }
257
+ exports.TreeBuilder = TreeBuilder;
258
+ function tree(arg1) {
259
+ const opts = (0, options_1.coerceTreeOptions)(arg1);
260
+ return new TreeBuilder(opts);
261
+ }
262
+ // Strings
263
+ class StrBuilder extends AbstractBuilder {
264
+ constructor(opts) {
265
+ super();
266
+ this.opts = opts;
267
+ }
268
+ build() {
269
+ var _a, _b, _c, _d, _e, _f;
270
+ if (this.opts.type === 'str-content') {
271
+ return new str_matcher_1.StrNodeMatcher({
272
+ matchers: [
273
+ new str_matcher_1.StrContentMatcher({
274
+ value: (_a = this.opts.match) !== null && _a !== void 0 ? _a : null,
275
+ handler: (_b = this.opts.handler) !== null && _b !== void 0 ? _b : null,
276
+ }),
277
+ ],
278
+ preHandler: null,
279
+ postHandler: null,
280
+ });
281
+ }
282
+ if (this.opts.match) {
283
+ const matchers = [];
284
+ this.opts.match.forEach((m) => {
285
+ if (typeof m === 'string' || (0, regex_1.isRegex)(m)) {
286
+ const contentMatcher = new str_matcher_1.StrContentMatcher({
287
+ value: m,
288
+ handler: null,
289
+ });
290
+ matchers.push(contentMatcher);
291
+ }
292
+ else if (m instanceof StrBuilder) {
293
+ const childStrMatcher = m.build();
294
+ if (childStrMatcher.matchers) {
295
+ matchers.push(...childStrMatcher.matchers);
296
+ }
297
+ }
298
+ else if (m instanceof str_matcher_1.StrTplMatcher) {
299
+ matchers.push(m);
300
+ }
301
+ else {
302
+ const tplMatcher = new str_matcher_1.StrTplMatcher({
303
+ matcher: m.build(),
304
+ preHandler: null,
305
+ postHandler: null,
306
+ });
307
+ matchers.push(tplMatcher);
308
+ }
309
+ });
310
+ return new str_matcher_1.StrNodeMatcher({
311
+ matchers: matchers,
312
+ preHandler: (_c = this.opts.preHandler) !== null && _c !== void 0 ? _c : null,
313
+ postHandler: (_d = this.opts.postHandler) !== null && _d !== void 0 ? _d : null,
314
+ });
315
+ }
316
+ return new str_matcher_1.StrNodeMatcher({
317
+ matchers: null,
318
+ preHandler: (_e = this.opts.preHandler) !== null && _e !== void 0 ? _e : null,
319
+ postHandler: (_f = this.opts.postHandler) !== null && _f !== void 0 ? _f : null,
320
+ });
321
+ }
322
+ }
323
+ exports.StrBuilder = StrBuilder;
324
+ function str(arg1, arg2) {
325
+ const opts = (0, options_1.coerceStrOptions)(arg1, arg2);
326
+ return new StrBuilder(opts);
327
+ }
328
+ function buildRoot(builder) {
329
+ const matcher = builder.build();
330
+ return matcher instanceof tree_matcher_1.TreeMatcher && matcher.type === 'root-tree'
331
+ ? matcher
332
+ : new tree_matcher_1.TreeMatcher({ matcher, type: 'root-tree' });
333
+ }
333
334
  //# sourceMappingURL=builder.js.map