@renovatebot/good-enough-parser 1.1.24 → 1.2.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 (166) 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/python.d.ts +6 -6
  9. package/dist/cjs/lang/python.js +73 -73
  10. package/dist/cjs/lang/scala.d.ts +6 -6
  11. package/dist/cjs/lang/scala.js +71 -71
  12. package/dist/cjs/lang/starlark.d.ts +6 -6
  13. package/dist/cjs/lang/starlark.js +58 -58
  14. package/dist/cjs/lang/types.d.ts +6 -6
  15. package/dist/cjs/lang/types.js +2 -2
  16. package/dist/cjs/lexer/bracket.d.ts +6 -6
  17. package/dist/cjs/lexer/bracket.js +57 -57
  18. package/dist/cjs/lexer/comment.d.ts +3 -3
  19. package/dist/cjs/lexer/comment.js +44 -44
  20. package/dist/cjs/lexer/index.d.ts +5 -5
  21. package/dist/cjs/lexer/index.js +155 -155
  22. package/dist/cjs/lexer/number.d.ts +2 -2
  23. package/dist/cjs/lexer/number.js +18 -18
  24. package/dist/cjs/lexer/operator.d.ts +2 -2
  25. package/dist/cjs/lexer/operator.js +24 -24
  26. package/dist/cjs/lexer/rules.d.ts +4 -4
  27. package/dist/cjs/lexer/rules.js +74 -74
  28. package/dist/cjs/lexer/string.d.ts +2 -2
  29. package/dist/cjs/lexer/string.js +181 -181
  30. package/dist/cjs/lexer/symbol.d.ts +2 -2
  31. package/dist/cjs/lexer/symbol.js +18 -18
  32. package/dist/cjs/lexer/token.d.ts +3 -3
  33. package/dist/cjs/lexer/token.js +64 -64
  34. package/dist/cjs/lexer/types.d.ts +142 -142
  35. package/dist/cjs/lexer/types.js +2 -2
  36. package/dist/cjs/parser/cursor.d.ts +2 -2
  37. package/dist/cjs/parser/cursor.js +13 -13
  38. package/dist/cjs/parser/index.d.ts +3 -3
  39. package/dist/cjs/parser/index.js +19 -19
  40. package/dist/cjs/parser/tree.d.ts +4 -4
  41. package/dist/cjs/parser/tree.js +246 -246
  42. package/dist/cjs/parser/types.d.ts +33 -33
  43. package/dist/cjs/parser/types.js +2 -2
  44. package/dist/cjs/query/builder.d.ts +144 -144
  45. package/dist/cjs/query/builder.js +332 -332
  46. package/dist/cjs/query/handler.d.ts +2 -2
  47. package/dist/cjs/query/handler.js +10 -10
  48. package/dist/cjs/query/index.d.ts +2 -2
  49. package/dist/cjs/query/index.js +32 -32
  50. package/dist/cjs/query/matchers/abstract-matcher.d.ts +9 -9
  51. package/dist/cjs/query/matchers/abstract-matcher.js +36 -36
  52. package/dist/cjs/query/matchers/alt-matcher.d.ts +10 -10
  53. package/dist/cjs/query/matchers/alt-matcher.js +33 -33
  54. package/dist/cjs/query/matchers/anchor-matcher.d.ts +17 -17
  55. package/dist/cjs/query/matchers/anchor-matcher.js +50 -50
  56. package/dist/cjs/query/matchers/comment-matcher.d.ts +10 -10
  57. package/dist/cjs/query/matchers/comment-matcher.js +39 -39
  58. package/dist/cjs/query/matchers/index.d.ts +6 -6
  59. package/dist/cjs/query/matchers/index.js +22 -22
  60. package/dist/cjs/query/matchers/many-matcher.d.ts +13 -13
  61. package/dist/cjs/query/matchers/many-matcher.js +61 -61
  62. package/dist/cjs/query/matchers/num-matcher.d.ts +8 -8
  63. package/dist/cjs/query/matchers/num-matcher.js +34 -34
  64. package/dist/cjs/query/matchers/op-matcher.d.ts +8 -8
  65. package/dist/cjs/query/matchers/op-matcher.js +34 -34
  66. package/dist/cjs/query/matchers/seq-matcher.d.ts +14 -14
  67. package/dist/cjs/query/matchers/seq-matcher.js +76 -76
  68. package/dist/cjs/query/matchers/str-matcher.d.ts +38 -38
  69. package/dist/cjs/query/matchers/str-matcher.js +108 -108
  70. package/dist/cjs/query/matchers/sym-matcher.d.ts +8 -8
  71. package/dist/cjs/query/matchers/sym-matcher.js +34 -34
  72. package/dist/cjs/query/matchers/tree-matcher.d.ts +23 -23
  73. package/dist/cjs/query/matchers/tree-matcher.js +121 -121
  74. package/dist/cjs/query/options.d.ts +10 -10
  75. package/dist/cjs/query/options.js +149 -149
  76. package/dist/cjs/query/regex.d.ts +1 -1
  77. package/dist/cjs/query/regex.js +13 -13
  78. package/dist/cjs/query/types.d.ts +100 -100
  79. package/dist/cjs/query/types.js +2 -2
  80. package/dist/cjs/util/clone.d.ts +1 -1
  81. package/dist/cjs/util/clone.js +5 -5
  82. package/dist/cjs/util/regex.d.ts +1 -1
  83. package/dist/cjs/util/regex.js +7 -7
  84. package/dist/esm/index.d.ts +4 -4
  85. package/dist/esm/index.js +8 -8
  86. package/dist/esm/lang/groovy.d.ts +6 -6
  87. package/dist/esm/lang/groovy.js +80 -80
  88. package/dist/esm/lang/index.d.ts +20 -20
  89. package/dist/esm/lang/index.js +37 -37
  90. package/dist/esm/lang/python.d.ts +6 -6
  91. package/dist/esm/lang/python.js +70 -70
  92. package/dist/esm/lang/scala.d.ts +6 -6
  93. package/dist/esm/lang/scala.js +68 -68
  94. package/dist/esm/lang/starlark.d.ts +6 -6
  95. package/dist/esm/lang/starlark.js +55 -55
  96. package/dist/esm/lang/types.d.ts +6 -6
  97. package/dist/esm/lang/types.js +1 -1
  98. package/dist/esm/lexer/bracket.d.ts +6 -6
  99. package/dist/esm/lexer/bracket.js +49 -49
  100. package/dist/esm/lexer/comment.d.ts +3 -3
  101. package/dist/esm/lexer/comment.js +39 -39
  102. package/dist/esm/lexer/index.d.ts +5 -5
  103. package/dist/esm/lexer/index.js +136 -136
  104. package/dist/esm/lexer/number.d.ts +2 -2
  105. package/dist/esm/lexer/number.js +14 -14
  106. package/dist/esm/lexer/operator.d.ts +2 -2
  107. package/dist/esm/lexer/operator.js +20 -20
  108. package/dist/esm/lexer/rules.d.ts +4 -4
  109. package/dist/esm/lexer/rules.js +69 -69
  110. package/dist/esm/lexer/string.d.ts +2 -2
  111. package/dist/esm/lexer/string.js +177 -177
  112. package/dist/esm/lexer/symbol.d.ts +2 -2
  113. package/dist/esm/lexer/symbol.js +14 -14
  114. package/dist/esm/lexer/token.d.ts +3 -3
  115. package/dist/esm/lexer/token.js +60 -60
  116. package/dist/esm/lexer/types.d.ts +142 -142
  117. package/dist/esm/lexer/types.js +1 -1
  118. package/dist/esm/parser/cursor.d.ts +2 -2
  119. package/dist/esm/parser/cursor.js +9 -9
  120. package/dist/esm/parser/index.d.ts +3 -3
  121. package/dist/esm/parser/index.js +3 -3
  122. package/dist/esm/parser/tree.d.ts +4 -4
  123. package/dist/esm/parser/tree.js +241 -241
  124. package/dist/esm/parser/types.d.ts +33 -33
  125. package/dist/esm/parser/types.js +1 -1
  126. package/dist/esm/query/builder.d.ts +144 -144
  127. package/dist/esm/query/builder.js +304 -304
  128. package/dist/esm/query/handler.d.ts +2 -2
  129. package/dist/esm/query/handler.js +6 -6
  130. package/dist/esm/query/index.d.ts +2 -2
  131. package/dist/esm/query/index.js +2 -2
  132. package/dist/esm/query/matchers/abstract-matcher.d.ts +9 -9
  133. package/dist/esm/query/matchers/abstract-matcher.js +32 -32
  134. package/dist/esm/query/matchers/alt-matcher.d.ts +10 -10
  135. package/dist/esm/query/matchers/alt-matcher.js +29 -29
  136. package/dist/esm/query/matchers/anchor-matcher.d.ts +17 -17
  137. package/dist/esm/query/matchers/anchor-matcher.js +44 -44
  138. package/dist/esm/query/matchers/comment-matcher.d.ts +10 -10
  139. package/dist/esm/query/matchers/comment-matcher.js +35 -35
  140. package/dist/esm/query/matchers/index.d.ts +6 -6
  141. package/dist/esm/query/matchers/index.js +6 -6
  142. package/dist/esm/query/matchers/many-matcher.d.ts +13 -13
  143. package/dist/esm/query/matchers/many-matcher.js +57 -57
  144. package/dist/esm/query/matchers/num-matcher.d.ts +8 -8
  145. package/dist/esm/query/matchers/num-matcher.js +30 -30
  146. package/dist/esm/query/matchers/op-matcher.d.ts +8 -8
  147. package/dist/esm/query/matchers/op-matcher.js +30 -30
  148. package/dist/esm/query/matchers/seq-matcher.d.ts +14 -14
  149. package/dist/esm/query/matchers/seq-matcher.js +72 -72
  150. package/dist/esm/query/matchers/str-matcher.d.ts +38 -38
  151. package/dist/esm/query/matchers/str-matcher.js +102 -102
  152. package/dist/esm/query/matchers/sym-matcher.d.ts +8 -8
  153. package/dist/esm/query/matchers/sym-matcher.js +30 -30
  154. package/dist/esm/query/matchers/tree-matcher.d.ts +23 -23
  155. package/dist/esm/query/matchers/tree-matcher.js +117 -117
  156. package/dist/esm/query/options.d.ts +10 -10
  157. package/dist/esm/query/options.js +139 -139
  158. package/dist/esm/query/regex.d.ts +1 -1
  159. package/dist/esm/query/regex.js +9 -9
  160. package/dist/esm/query/types.d.ts +100 -100
  161. package/dist/esm/query/types.js +1 -1
  162. package/dist/esm/util/clone.d.ts +1 -1
  163. package/dist/esm/util/clone.js +1 -1
  164. package/dist/esm/util/regex.d.ts +1 -1
  165. package/dist/esm/util/regex.js +3 -3
  166. package/package.json +3 -3
@@ -1,109 +1,109 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StrNodeMatcher = exports.StrTplMatcher = exports.StrContentMatcher = void 0;
4
- const handler_1 = require("../handler");
5
- const regex_1 = require("../regex");
6
- const abstract_matcher_1 = require("./abstract-matcher");
7
- class StrContentMatcher extends abstract_matcher_1.AbstractMatcher {
8
- constructor({ value, handler }) {
9
- super();
10
- this.content = value !== null && value !== void 0 ? value : null;
11
- this.handler = (0, handler_1.safeHandler)(handler);
12
- }
13
- match(checkpoint) {
14
- let { cursor, context } = checkpoint;
15
- const node = cursor.node;
16
- if ((node === null || node === void 0 ? void 0 : node.type) === 'string-value') {
17
- let isMatched = true;
18
- if (typeof this.content === 'string') {
19
- isMatched = this.content === node.value;
20
- }
21
- else if ((0, regex_1.isRegex)(this.content)) {
22
- isMatched = this.content.test(node.value);
23
- }
24
- if (isMatched) {
25
- context = this.handler(context, node);
26
- cursor = this.moveRight(cursor);
27
- return { cursor, context };
28
- }
29
- }
30
- return null;
31
- }
32
- }
33
- exports.StrContentMatcher = StrContentMatcher;
34
- class StrTplMatcher extends abstract_matcher_1.AbstractMatcher {
35
- constructor(config) {
36
- super();
37
- this.matcher = config.matcher;
38
- this.preHandler = (0, handler_1.safeHandler)(config.preHandler);
39
- this.postHandler = (0, handler_1.safeHandler)(config.postHandler);
40
- }
41
- match(checkpoint) {
42
- var _a;
43
- const { cursor: tplCursor, context: tplContext } = checkpoint;
44
- const rootNode = tplCursor.node;
45
- if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'template-tree') {
46
- let cursor = checkpoint.cursor.down;
47
- if (cursor && cursor.node) {
48
- let context = this.preHandler(tplContext, rootNode);
49
- cursor = this.matcher.seekNext(cursor);
50
- const match = this.matcher.match({ context, cursor });
51
- if (match) {
52
- ({ cursor, context } = match);
53
- cursor = this.seekNext(cursor);
54
- if (((_a = cursor.node) === null || _a === void 0 ? void 0 : _a.type) === '_end') {
55
- context = this.postHandler(context, rootNode);
56
- cursor = this.moveRight(tplCursor);
57
- return { context, cursor };
58
- }
59
- }
60
- }
61
- }
62
- return null;
63
- }
64
- }
65
- exports.StrTplMatcher = StrTplMatcher;
66
- class StrNodeMatcher extends abstract_matcher_1.AbstractMatcher {
67
- constructor(opts) {
68
- var _a;
69
- super();
70
- this.matchers = (_a = opts.matchers) !== null && _a !== void 0 ? _a : null;
71
- this.preHandler = (0, handler_1.safeHandler)(opts.preHandler);
72
- this.postHandler = (0, handler_1.safeHandler)(opts.postHandler);
73
- }
74
- match(checkpoint) {
75
- var _a;
76
- const rootCursor = this.seekNext(checkpoint.cursor);
77
- const rootNode = rootCursor.node;
78
- if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'string-tree') {
79
- let context = this.preHandler(checkpoint.context, rootNode);
80
- let cursor = rootCursor;
81
- if (this.matchers) {
82
- const tokensCount = cursor.children.length - 2;
83
- if (tokensCount !== this.matchers.length) {
84
- return null;
85
- }
86
- if (tokensCount > 0) {
87
- cursor = this.moveRight(cursor.down);
88
- for (const matcher of this.matchers) {
89
- const match = matcher.match({ context, cursor });
90
- if (!match) {
91
- return null;
92
- }
93
- ({ cursor, context } = match);
94
- }
95
- }
96
- }
97
- context = this.postHandler(context, rootNode);
98
- cursor = this.moveRight(rootCursor);
99
- return { context, cursor };
100
- }
101
- else if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'string-value' && ((_a = this.matchers) === null || _a === void 0 ? void 0 : _a.length)) {
102
- const matcher = this.matchers[0];
103
- return matcher.match({ context: checkpoint.context, cursor: rootCursor });
104
- }
105
- return null;
106
- }
107
- }
108
- exports.StrNodeMatcher = StrNodeMatcher;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StrNodeMatcher = exports.StrTplMatcher = exports.StrContentMatcher = void 0;
4
+ const handler_1 = require("../handler");
5
+ const regex_1 = require("../regex");
6
+ const abstract_matcher_1 = require("./abstract-matcher");
7
+ class StrContentMatcher extends abstract_matcher_1.AbstractMatcher {
8
+ constructor({ value, handler }) {
9
+ super();
10
+ this.content = value !== null && value !== void 0 ? value : null;
11
+ this.handler = (0, handler_1.safeHandler)(handler);
12
+ }
13
+ match(checkpoint) {
14
+ let { cursor, context } = checkpoint;
15
+ const node = cursor.node;
16
+ if ((node === null || node === void 0 ? void 0 : node.type) === 'string-value') {
17
+ let isMatched = true;
18
+ if (typeof this.content === 'string') {
19
+ isMatched = this.content === node.value;
20
+ }
21
+ else if ((0, regex_1.isRegex)(this.content)) {
22
+ isMatched = this.content.test(node.value);
23
+ }
24
+ if (isMatched) {
25
+ context = this.handler(context, node);
26
+ cursor = this.moveRight(cursor);
27
+ return { cursor, context };
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ }
33
+ exports.StrContentMatcher = StrContentMatcher;
34
+ class StrTplMatcher extends abstract_matcher_1.AbstractMatcher {
35
+ constructor(config) {
36
+ super();
37
+ this.matcher = config.matcher;
38
+ this.preHandler = (0, handler_1.safeHandler)(config.preHandler);
39
+ this.postHandler = (0, handler_1.safeHandler)(config.postHandler);
40
+ }
41
+ match(checkpoint) {
42
+ var _a;
43
+ const { cursor: tplCursor, context: tplContext } = checkpoint;
44
+ const rootNode = tplCursor.node;
45
+ if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'template-tree') {
46
+ let cursor = checkpoint.cursor.down;
47
+ if (cursor && cursor.node) {
48
+ let context = this.preHandler(tplContext, rootNode);
49
+ cursor = this.matcher.seekNext(cursor);
50
+ const match = this.matcher.match({ context, cursor });
51
+ if (match) {
52
+ ({ cursor, context } = match);
53
+ cursor = this.seekNext(cursor);
54
+ if (((_a = cursor.node) === null || _a === void 0 ? void 0 : _a.type) === '_end') {
55
+ context = this.postHandler(context, rootNode);
56
+ cursor = this.moveRight(tplCursor);
57
+ return { context, cursor };
58
+ }
59
+ }
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ }
65
+ exports.StrTplMatcher = StrTplMatcher;
66
+ class StrNodeMatcher extends abstract_matcher_1.AbstractMatcher {
67
+ constructor(opts) {
68
+ var _a;
69
+ super();
70
+ this.matchers = (_a = opts.matchers) !== null && _a !== void 0 ? _a : null;
71
+ this.preHandler = (0, handler_1.safeHandler)(opts.preHandler);
72
+ this.postHandler = (0, handler_1.safeHandler)(opts.postHandler);
73
+ }
74
+ match(checkpoint) {
75
+ var _a;
76
+ const rootCursor = this.seekNext(checkpoint.cursor);
77
+ const rootNode = rootCursor.node;
78
+ if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'string-tree') {
79
+ let context = this.preHandler(checkpoint.context, rootNode);
80
+ let cursor = rootCursor;
81
+ if (this.matchers) {
82
+ const tokensCount = cursor.children.length - 2;
83
+ if (tokensCount !== this.matchers.length) {
84
+ return null;
85
+ }
86
+ if (tokensCount > 0) {
87
+ cursor = this.moveRight(cursor.down);
88
+ for (const matcher of this.matchers) {
89
+ const match = matcher.match({ context, cursor });
90
+ if (!match) {
91
+ return null;
92
+ }
93
+ ({ cursor, context } = match);
94
+ }
95
+ }
96
+ }
97
+ context = this.postHandler(context, rootNode);
98
+ cursor = this.moveRight(rootCursor);
99
+ return { context, cursor };
100
+ }
101
+ else if ((rootNode === null || rootNode === void 0 ? void 0 : rootNode.type) === 'string-value' && ((_a = this.matchers) === null || _a === void 0 ? void 0 : _a.length)) {
102
+ const matcher = this.matchers[0];
103
+ return matcher.match({ context: checkpoint.context, cursor: rootCursor });
104
+ }
105
+ return null;
106
+ }
107
+ }
108
+ exports.StrNodeMatcher = StrNodeMatcher;
109
109
  //# sourceMappingURL=str-matcher.js.map
@@ -1,9 +1,9 @@
1
- import type { Checkpoint, SymMatcherHandler, SymMatcherOptions, SymMatcherValue } from '../types';
2
- import { AbstractMatcher } from './abstract-matcher';
3
- export declare class SymMatcher<Ctx> extends AbstractMatcher<Ctx> {
4
- readonly sym: SymMatcherValue;
5
- readonly handler: SymMatcherHandler<Ctx>;
6
- constructor({ value, handler }: SymMatcherOptions<Ctx>);
7
- match(checkpoint: Checkpoint<Ctx>): Checkpoint<Ctx> | null;
8
- }
1
+ import type { Checkpoint, SymMatcherHandler, SymMatcherOptions, SymMatcherValue } from '../types';
2
+ import { AbstractMatcher } from './abstract-matcher';
3
+ export declare class SymMatcher<Ctx> extends AbstractMatcher<Ctx> {
4
+ readonly sym: SymMatcherValue;
5
+ readonly handler: SymMatcherHandler<Ctx>;
6
+ constructor({ value, handler }: SymMatcherOptions<Ctx>);
7
+ match(checkpoint: Checkpoint<Ctx>): Checkpoint<Ctx> | null;
8
+ }
9
9
  //# sourceMappingURL=sym-matcher.d.ts.map
@@ -1,35 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SymMatcher = void 0;
4
- const handler_1 = require("../handler");
5
- const regex_1 = require("../regex");
6
- const abstract_matcher_1 = require("./abstract-matcher");
7
- class SymMatcher extends abstract_matcher_1.AbstractMatcher {
8
- constructor({ value, handler }) {
9
- super();
10
- this.sym = value;
11
- this.handler = (0, handler_1.safeHandler)(handler);
12
- }
13
- match(checkpoint) {
14
- let context = checkpoint.context;
15
- let cursor = this.seekNext(checkpoint.cursor);
16
- const node = cursor.node;
17
- if ((node === null || node === void 0 ? void 0 : node.type) === 'symbol') {
18
- let isMatched = true;
19
- if (typeof this.sym === 'string') {
20
- isMatched = this.sym === node.value;
21
- }
22
- else if ((0, regex_1.isRegex)(this.sym)) {
23
- isMatched = this.sym.test(node.value);
24
- }
25
- if (isMatched) {
26
- context = this.handler(context, node);
27
- cursor = this.moveRight(cursor);
28
- return { cursor, context };
29
- }
30
- }
31
- return null;
32
- }
33
- }
34
- exports.SymMatcher = SymMatcher;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SymMatcher = void 0;
4
+ const handler_1 = require("../handler");
5
+ const regex_1 = require("../regex");
6
+ const abstract_matcher_1 = require("./abstract-matcher");
7
+ class SymMatcher extends abstract_matcher_1.AbstractMatcher {
8
+ constructor({ value, handler }) {
9
+ super();
10
+ this.sym = value;
11
+ this.handler = (0, handler_1.safeHandler)(handler);
12
+ }
13
+ match(checkpoint) {
14
+ let context = checkpoint.context;
15
+ let cursor = this.seekNext(checkpoint.cursor);
16
+ const node = cursor.node;
17
+ if ((node === null || node === void 0 ? void 0 : node.type) === 'symbol') {
18
+ let isMatched = true;
19
+ if (typeof this.sym === 'string') {
20
+ isMatched = this.sym === node.value;
21
+ }
22
+ else if ((0, regex_1.isRegex)(this.sym)) {
23
+ isMatched = this.sym.test(node.value);
24
+ }
25
+ if (isMatched) {
26
+ context = this.handler(context, node);
27
+ cursor = this.moveRight(cursor);
28
+ return { cursor, context };
29
+ }
30
+ }
31
+ return null;
32
+ }
33
+ }
34
+ exports.SymMatcher = SymMatcher;
35
35
  //# sourceMappingURL=sym-matcher.js.map
@@ -1,24 +1,24 @@
1
- import type { Cursor } from '../../parser/types';
2
- import type { Checkpoint, Matcher, TreeMatcherHandler, TreeMatcherType, TreeOptionsBase } from '../types';
3
- import { AbstractMatcher } from './abstract-matcher';
4
- interface TreeMatcherOptions<Ctx> extends TreeOptionsBase<Ctx> {
5
- matcher: Matcher<Ctx> | null;
6
- }
7
- export declare class TreeMatcher<Ctx> extends AbstractMatcher<Ctx> {
8
- readonly type: TreeMatcherType | null;
9
- readonly startsWithValue: string | null;
10
- readonly endsWithValue: string | null;
11
- readonly matcher: Matcher<Ctx> | null;
12
- readonly maxDepth: number;
13
- readonly maxMatches: number;
14
- readonly preHandler: TreeMatcherHandler<Ctx>;
15
- readonly postHandler: TreeMatcherHandler<Ctx>;
16
- private walkDepth;
17
- private matchCount;
18
- constructor(config: TreeMatcherOptions<Ctx>);
19
- walkToNextSignificantNode(cursor: Cursor): Cursor | undefined;
20
- walkToNextMatch(context: Ctx, cursor: Cursor | undefined): Checkpoint<Ctx> | undefined;
21
- match(checkpoint: Checkpoint<Ctx>): Checkpoint<Ctx> | null;
22
- }
23
- export {};
1
+ import type { Cursor } from '../../parser/types';
2
+ import type { Checkpoint, Matcher, TreeMatcherHandler, TreeMatcherType, TreeOptionsBase } from '../types';
3
+ import { AbstractMatcher } from './abstract-matcher';
4
+ interface TreeMatcherOptions<Ctx> extends TreeOptionsBase<Ctx> {
5
+ matcher: Matcher<Ctx> | null;
6
+ }
7
+ export declare class TreeMatcher<Ctx> extends AbstractMatcher<Ctx> {
8
+ readonly type: TreeMatcherType | null;
9
+ readonly startsWithValue: string | null;
10
+ readonly endsWithValue: string | null;
11
+ readonly matcher: Matcher<Ctx> | null;
12
+ readonly maxDepth: number;
13
+ readonly maxMatches: number;
14
+ readonly preHandler: TreeMatcherHandler<Ctx>;
15
+ readonly postHandler: TreeMatcherHandler<Ctx>;
16
+ private walkDepth;
17
+ private matchCount;
18
+ constructor(config: TreeMatcherOptions<Ctx>);
19
+ walkToNextSignificantNode(cursor: Cursor): Cursor | undefined;
20
+ walkToNextMatch(context: Ctx, cursor: Cursor | undefined): Checkpoint<Ctx> | undefined;
21
+ match(checkpoint: Checkpoint<Ctx>): Checkpoint<Ctx> | null;
22
+ }
23
+ export {};
24
24
  //# sourceMappingURL=tree-matcher.d.ts.map
@@ -1,122 +1,122 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TreeMatcher = void 0;
4
- const parser_1 = require("../../parser");
5
- const handler_1 = require("../handler");
6
- const abstract_matcher_1 = require("./abstract-matcher");
7
- class TreeMatcher extends abstract_matcher_1.AbstractMatcher {
8
- constructor(config) {
9
- var _a, _b, _c;
10
- super();
11
- this.walkDepth = 0;
12
- this.matchCount = 0;
13
- this.type = (_a = config.type) !== null && _a !== void 0 ? _a : null;
14
- this.startsWithValue = (_b = config.startsWith) !== null && _b !== void 0 ? _b : null;
15
- this.endsWithValue = (_c = config.endsWith) !== null && _c !== void 0 ? _c : null;
16
- this.matcher = config.matcher;
17
- this.maxDepth =
18
- typeof config.maxDepth === 'number' && config.maxDepth > 0
19
- ? config.maxDepth
20
- : 1024;
21
- this.maxMatches =
22
- typeof config.maxMatches === 'number' && config.maxMatches > 0
23
- ? config.maxMatches
24
- : 1024 * 1024;
25
- this.preHandler = (0, handler_1.safeHandler)(config.preHandler);
26
- this.postHandler = (0, handler_1.safeHandler)(config.postHandler);
27
- }
28
- walkToNextSignificantNode(cursor) {
29
- const downCursor = cursor.down;
30
- if (downCursor && this.walkDepth < this.maxDepth) {
31
- this.walkDepth += 1;
32
- return downCursor;
33
- }
34
- let rightCursor = cursor.right;
35
- if (rightCursor) {
36
- rightCursor = this.matcher
37
- ? this.matcher.seekNext(rightCursor)
38
- : this.seekNext(rightCursor);
39
- if (rightCursor) {
40
- return rightCursor;
41
- }
42
- }
43
- const canMoveUp = this.walkDepth > 1;
44
- let upperCursor = canMoveUp ? cursor.up : undefined;
45
- while (upperCursor && canMoveUp) {
46
- rightCursor = upperCursor.right;
47
- if (rightCursor) {
48
- rightCursor = this.matcher
49
- ? this.matcher.seekNext(rightCursor)
50
- : this.seekNext(rightCursor);
51
- if (rightCursor) {
52
- upperCursor = rightCursor;
53
- break;
54
- }
55
- }
56
- upperCursor = upperCursor.up;
57
- }
58
- if (upperCursor) {
59
- this.walkDepth -= 1;
60
- return upperCursor;
61
- }
62
- return undefined;
63
- }
64
- walkToNextMatch(context, cursor) {
65
- if (!cursor || !this.matcher) {
66
- return undefined;
67
- }
68
- let nextCursor = this.walkToNextSignificantNode(cursor);
69
- while (nextCursor) {
70
- const match = this.matcher.match({ cursor: nextCursor, context });
71
- if (match) {
72
- this.matchCount += 1;
73
- return match;
74
- }
75
- nextCursor = this.walkToNextSignificantNode(nextCursor);
76
- }
77
- return undefined;
78
- }
79
- match(checkpoint) {
80
- this.walkDepth = 0;
81
- this.matchCount = 0;
82
- const rootCursor = this.seekNext(checkpoint.cursor);
83
- const rootNode = rootCursor.node;
84
- if ((0, parser_1.isTree)(rootNode)) {
85
- if (this.type && this.type !== rootNode.type) {
86
- return null;
87
- }
88
- if (this.type === 'wrapped-tree') {
89
- const currentTree = rootNode;
90
- if (this.startsWithValue &&
91
- currentTree.startsWith.value !== this.startsWithValue) {
92
- return null;
93
- }
94
- if (this.endsWithValue &&
95
- currentTree.endsWith.value !== this.endsWithValue) {
96
- return null;
97
- }
98
- }
99
- let context = checkpoint.context;
100
- context = this.preHandler(context, rootNode);
101
- if (this.matcher) {
102
- let nextMatch = this.walkToNextMatch(context, rootCursor);
103
- while (nextMatch) {
104
- context = nextMatch.context;
105
- if (this.matchCount === this.maxMatches) {
106
- break;
107
- }
108
- nextMatch = this.walkToNextMatch(context, nextMatch.cursor);
109
- }
110
- if (this.matchCount === 0) {
111
- return null;
112
- }
113
- }
114
- context = this.postHandler(context, rootNode);
115
- const cursor = rootNode.type === 'root-tree' ? rootCursor : this.moveRight(rootCursor);
116
- return { context, cursor };
117
- }
118
- return null;
119
- }
120
- }
121
- exports.TreeMatcher = TreeMatcher;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TreeMatcher = void 0;
4
+ const parser_1 = require("../../parser");
5
+ const handler_1 = require("../handler");
6
+ const abstract_matcher_1 = require("./abstract-matcher");
7
+ class TreeMatcher extends abstract_matcher_1.AbstractMatcher {
8
+ constructor(config) {
9
+ var _a, _b, _c;
10
+ super();
11
+ this.walkDepth = 0;
12
+ this.matchCount = 0;
13
+ this.type = (_a = config.type) !== null && _a !== void 0 ? _a : null;
14
+ this.startsWithValue = (_b = config.startsWith) !== null && _b !== void 0 ? _b : null;
15
+ this.endsWithValue = (_c = config.endsWith) !== null && _c !== void 0 ? _c : null;
16
+ this.matcher = config.matcher;
17
+ this.maxDepth =
18
+ typeof config.maxDepth === 'number' && config.maxDepth > 0
19
+ ? config.maxDepth
20
+ : 1024;
21
+ this.maxMatches =
22
+ typeof config.maxMatches === 'number' && config.maxMatches > 0
23
+ ? config.maxMatches
24
+ : 1024 * 1024;
25
+ this.preHandler = (0, handler_1.safeHandler)(config.preHandler);
26
+ this.postHandler = (0, handler_1.safeHandler)(config.postHandler);
27
+ }
28
+ walkToNextSignificantNode(cursor) {
29
+ const downCursor = cursor.down;
30
+ if (downCursor && this.walkDepth < this.maxDepth) {
31
+ this.walkDepth += 1;
32
+ return downCursor;
33
+ }
34
+ let rightCursor = cursor.right;
35
+ if (rightCursor) {
36
+ rightCursor = this.matcher
37
+ ? this.matcher.seekNext(rightCursor)
38
+ : this.seekNext(rightCursor);
39
+ if (rightCursor) {
40
+ return rightCursor;
41
+ }
42
+ }
43
+ const canMoveUp = this.walkDepth > 1;
44
+ let upperCursor = canMoveUp ? cursor.up : undefined;
45
+ while (upperCursor && canMoveUp) {
46
+ rightCursor = upperCursor.right;
47
+ if (rightCursor) {
48
+ rightCursor = this.matcher
49
+ ? this.matcher.seekNext(rightCursor)
50
+ : this.seekNext(rightCursor);
51
+ if (rightCursor) {
52
+ upperCursor = rightCursor;
53
+ break;
54
+ }
55
+ }
56
+ upperCursor = upperCursor.up;
57
+ }
58
+ if (upperCursor) {
59
+ this.walkDepth -= 1;
60
+ return upperCursor;
61
+ }
62
+ return undefined;
63
+ }
64
+ walkToNextMatch(context, cursor) {
65
+ if (!cursor || !this.matcher) {
66
+ return undefined;
67
+ }
68
+ let nextCursor = this.walkToNextSignificantNode(cursor);
69
+ while (nextCursor) {
70
+ const match = this.matcher.match({ cursor: nextCursor, context });
71
+ if (match) {
72
+ this.matchCount += 1;
73
+ return match;
74
+ }
75
+ nextCursor = this.walkToNextSignificantNode(nextCursor);
76
+ }
77
+ return undefined;
78
+ }
79
+ match(checkpoint) {
80
+ this.walkDepth = 0;
81
+ this.matchCount = 0;
82
+ const rootCursor = this.seekNext(checkpoint.cursor);
83
+ const rootNode = rootCursor.node;
84
+ if ((0, parser_1.isTree)(rootNode)) {
85
+ if (this.type && this.type !== rootNode.type) {
86
+ return null;
87
+ }
88
+ if (this.type === 'wrapped-tree') {
89
+ const currentTree = rootNode;
90
+ if (this.startsWithValue &&
91
+ currentTree.startsWith.value !== this.startsWithValue) {
92
+ return null;
93
+ }
94
+ if (this.endsWithValue &&
95
+ currentTree.endsWith.value !== this.endsWithValue) {
96
+ return null;
97
+ }
98
+ }
99
+ let context = checkpoint.context;
100
+ context = this.preHandler(context, rootNode);
101
+ if (this.matcher) {
102
+ let nextMatch = this.walkToNextMatch(context, rootCursor);
103
+ while (nextMatch) {
104
+ context = nextMatch.context;
105
+ if (this.matchCount === this.maxMatches) {
106
+ break;
107
+ }
108
+ nextMatch = this.walkToNextMatch(context, nextMatch.cursor);
109
+ }
110
+ if (this.matchCount === 0) {
111
+ return null;
112
+ }
113
+ }
114
+ context = this.postHandler(context, rootNode);
115
+ const cursor = rootNode.type === 'root-tree' ? rootCursor : this.moveRight(rootCursor);
116
+ return { context, cursor };
117
+ }
118
+ return null;
119
+ }
120
+ }
121
+ exports.TreeMatcher = TreeMatcher;
122
122
  //# sourceMappingURL=tree-matcher.js.map
@@ -1,11 +1,11 @@
1
- import type { Node, TreeType } from '../parser/types';
2
- import type { StrContentMatcherHandler } from './matchers/str-matcher';
3
- import type { CommentMatcherHandler, CommentMatcherOptions, CommentMatcherValue, ManyBuilderOpts, NumMatcherHandler, NumMatcherOptions, NumMatcherValue, OpMatcherHandler, OpMatcherOptions, OpMatcherValue, QueryBuilder, StrBuilderOptions, StrBuilderOptionsBase, SymMatcherHandler, SymMatcherOptions, SymMatcherValue, TreeBuilderOptions } from './types';
4
- export declare function coerceSymOptions<Ctx>(arg1?: SymMatcherValue | SymMatcherOptions<Ctx> | SymMatcherHandler<Ctx>, arg2?: SymMatcherHandler<Ctx>): SymMatcherOptions<Ctx>;
5
- export declare function coerceOpOptions<Ctx>(arg1?: OpMatcherValue | OpMatcherOptions<Ctx> | OpMatcherHandler<Ctx>, arg2?: OpMatcherHandler<Ctx>): OpMatcherOptions<Ctx>;
6
- export declare function coerceCommentOptions<Ctx>(arg1?: CommentMatcherValue | CommentMatcherOptions<Ctx> | CommentMatcherHandler<Ctx>, arg2?: CommentMatcherHandler<Ctx>): CommentMatcherOptions<Ctx>;
7
- export declare function coerceNumOptions<Ctx>(arg1?: NumMatcherValue | NumMatcherOptions<Ctx> | NumMatcherHandler<Ctx>, arg2?: NumMatcherHandler<Ctx>): NumMatcherOptions<Ctx>;
8
- export declare function coerceManyOptions<Ctx>(builder: QueryBuilder<Ctx, Node>, arg2?: number, arg3?: number): ManyBuilderOpts<Ctx>;
9
- export declare function coerceTreeOptions<Ctx>(arg1: TreeBuilderOptions<Ctx> | TreeType | undefined): TreeBuilderOptions<Ctx>;
10
- export declare function coerceStrOptions<Ctx>(arg1: string | RegExp | StrContentMatcherHandler<Ctx> | StrBuilderOptionsBase<Ctx> | undefined, arg2: StrContentMatcherHandler<Ctx> | undefined): StrBuilderOptions<Ctx>;
1
+ import type { Node, TreeType } from '../parser/types';
2
+ import type { StrContentMatcherHandler } from './matchers/str-matcher';
3
+ import type { CommentMatcherHandler, CommentMatcherOptions, CommentMatcherValue, ManyBuilderOpts, NumMatcherHandler, NumMatcherOptions, NumMatcherValue, OpMatcherHandler, OpMatcherOptions, OpMatcherValue, QueryBuilder, StrBuilderOptions, StrBuilderOptionsBase, SymMatcherHandler, SymMatcherOptions, SymMatcherValue, TreeBuilderOptions } from './types';
4
+ export declare function coerceSymOptions<Ctx>(arg1?: SymMatcherValue | SymMatcherOptions<Ctx> | SymMatcherHandler<Ctx>, arg2?: SymMatcherHandler<Ctx>): SymMatcherOptions<Ctx>;
5
+ export declare function coerceOpOptions<Ctx>(arg1?: OpMatcherValue | OpMatcherOptions<Ctx> | OpMatcherHandler<Ctx>, arg2?: OpMatcherHandler<Ctx>): OpMatcherOptions<Ctx>;
6
+ export declare function coerceCommentOptions<Ctx>(arg1?: CommentMatcherValue | CommentMatcherOptions<Ctx> | CommentMatcherHandler<Ctx>, arg2?: CommentMatcherHandler<Ctx>): CommentMatcherOptions<Ctx>;
7
+ export declare function coerceNumOptions<Ctx>(arg1?: NumMatcherValue | NumMatcherOptions<Ctx> | NumMatcherHandler<Ctx>, arg2?: NumMatcherHandler<Ctx>): NumMatcherOptions<Ctx>;
8
+ export declare function coerceManyOptions<Ctx>(builder: QueryBuilder<Ctx, Node>, arg2?: number, arg3?: number): ManyBuilderOpts<Ctx>;
9
+ export declare function coerceTreeOptions<Ctx>(arg1: TreeBuilderOptions<Ctx> | TreeType | undefined): TreeBuilderOptions<Ctx>;
10
+ export declare function coerceStrOptions<Ctx>(arg1: string | RegExp | StrContentMatcherHandler<Ctx> | StrBuilderOptionsBase<Ctx> | undefined, arg2: StrContentMatcherHandler<Ctx> | undefined): StrBuilderOptions<Ctx>;
11
11
  //# sourceMappingURL=options.d.ts.map