occam-parsers 23.0.114 → 23.0.116

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.
@@ -230,25 +230,10 @@ var TerminalNode = /*#__PURE__*/ function() {
230
230
  }
231
231
  },
232
232
  {
233
- key: "isIncludedIn",
234
- value: function isIncludedIn(node) {
235
- var _this = this;
236
- var includedIn = false;
237
- if (this === node) {
238
- includedIn = true;
239
- } else {
240
- var nodeNonTerminalNode = node.isNonTerminalNode();
241
- if (nodeNonTerminalNode) {
242
- var nonTerminalNode = node, childNodes = nonTerminalNode.getChildNodes();
243
- includedIn = childNodes.some(function(childNode) {
244
- var includedInChildNode = _this.isIncludedIn(childNode);
245
- if (includedInChildNode) {
246
- return true;
247
- }
248
- });
249
- }
250
- }
251
- return includedIn;
233
+ key: "asParseTree",
234
+ value: function asParseTree(tokens) {
235
+ var terminalNode = this, terminalNodeParseTree = _terminalNode.default.fromTerminalNodeAndTokens(terminalNode, tokens), parseTree = terminalNodeParseTree; ///
236
+ return parseTree;
252
237
  }
253
238
  },
254
239
  {
@@ -264,13 +249,6 @@ var TerminalNode = /*#__PURE__*/ function() {
264
249
  return matches;
265
250
  }
266
251
  },
267
- {
268
- key: "asParseTree",
269
- value: function asParseTree(tokens) {
270
- var terminalNode = this, terminalNodeParseTree = _terminalNode.default.fromTerminalNodeAndTokens(terminalNode, tokens), parseTree = terminalNodeParseTree; ///
271
- return parseTree;
272
- }
273
- },
274
252
  {
275
253
  key: "clone",
276
254
  value: function clone() {
@@ -283,6 +261,13 @@ var TerminalNode = /*#__PURE__*/ function() {
283
261
  ].concat(_to_consumable_array(remainingArguments)));
284
262
  return terminalNode;
285
263
  }
264
+ },
265
+ {
266
+ key: "destroy",
267
+ value: function destroy() {
268
+ this.parentNode = null;
269
+ this.significantToken = null;
270
+ }
286
271
  }
287
272
  ], [
288
273
  {
@@ -322,4 +307,4 @@ var TerminalNode = /*#__PURE__*/ function() {
322
307
  return TerminalNode;
323
308
  }();
324
309
 
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Rlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvdGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudE5vZGUsIHNpZ25pZmljYW50VG9rZW4pIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9IHNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0U2lnbmlmaWNhbnRUb2tlbihzaWduaWZpY2FudFRva2VuKSB7XG4gICAgdGhpcy5zaWduaWZpY2FudFRva2VuID0gc2lnbmlmaWNhbnRUb2tlbjtcbiAgfVxuXG4gIGlzU3RhcnRPZkNvbnRlbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZDb250ZW50Tm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHN0YXJ0T2ZDb250ZW50Tm9kZTtcbiAgfVxuXG4gIGlzTm9XaGl0ZXNwYWNlTm9kZSgpIHtcbiAgICBjb25zdCBub1doaXRlc3BhY2VOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9XaGl0ZXNwYWNlTm9kZTtcbiAgfVxuXG4gIGlzRXBzaWxvbk5vZGUoKSB7XG4gICAgY29uc3QgZXBzaWxvbk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBlcHNpbG9uTm9kZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRydWU7XG4gICAgXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW4uZ2V0VHlwZSgpOyB9XG5cbiAgZ2V0Q29udGVudCgpIHsgcmV0dXJuIHRoaXMuc2lnbmlmaWNhbnRUb2tlbi5nZXRDb250ZW50KCk7IH1cblxuICBnZXRQcmVjZWRlbmNlKCkgIHtcbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbDtcblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgaXNMb3dlclByZWNlZGVuY2UocGFyZW50UnVsZU5hbWUsIHBhcmVudFByZWNlZGVuY2UpIHtcbiAgICBjb25zdCBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcblxuICAgIHJldHVybiBsb3dlclByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0aGlzLmdldFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gc2lnbmlmaWNhbnRUb2tlbkluZGV4OyAvLy9cblxuICAgIHJldHVybiBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdGhpcy5nZXRTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gc2lnbmlmaWNhbnRUb2tlbkluZGV4OyAvLy9cblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBzaWduaWZpY2FudFRva2VuSW5kZXggPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdG9rZW5zLmluZGV4T2YodGhpcy5zaWduaWZpY2FudFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIGlmICh0aGlzLnNpZ25pZmljYW50VG9rZW4gIT09IG51bGwpIHtcbiAgICAgIHNpZ25pZmljYW50VG9rZW5zLnB1c2godGhpcy5zaWduaWZpY2FudFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRBbmNlc3Rvck5vZGVzKCkge1xuICAgIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSBbXTtcblxuICAgIGxldCBwYXJlbnROb2RlID0gdGhpcy5wYXJlbnROb2RlO1xuXG4gICAgd2hpbGUgKHBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yTm9kZSA9IHBhcmVudE5vZGU7ICAvLy9cblxuICAgICAgYW5jZXN0b3JOb2Rlcy5wdXNoKGFuY2VzdG9yTm9kZSk7XG5cbiAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLmdldFBhcmVudE5vZGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2RlcztcbiAgfVxuXG4gIGlzSW5jbHVkZWRJbihub2RlKSB7XG4gICAgbGV0IGluY2x1ZGVkSW4gPSBmYWxzZTtcblxuICAgIGlmICh0aGlzID09PSBub2RlKSB7XG4gICAgICBpbmNsdWRlZEluID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgIGluY2x1ZGVkSW4gPSBjaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluY2x1ZGVkSW5DaGlsZE5vZGUgPSB0aGlzLmlzSW5jbHVkZWRJbihjaGlsZE5vZGUpO1xuXG4gICAgICAgICAgaWYgKGluY2x1ZGVkSW5DaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluY2x1ZGVkSW47XG4gIH1cblxuICBtYXRjaChub2RlLCBkZXB0aCA9IEluZmluaXR5LCBleGFjdGx5ID0gZmFsc2UpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBzaWduaWZpY2FudFRva2VuID0gdGVybWluYWxOb2RlLmdldFNpZ25pZmljYW50VG9rZW4oKTtcblxuICAgICAgbWF0Y2hlcyA9IGV4YWN0bHkgP1xuICAgICAgICAgICAgICAgICAgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9PT0gc2lnbmlmaWNhbnRUb2tlbikgOlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaWduaWZpY2FudFRva2VuLm1hdGNoKHNpZ25pZmljYW50VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IFRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSB0ZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgc2lnbmlmaWNhbnRUb2tlbiA9IHRoaXMuc2lnbmlmaWNhbnRUb2tlbixcbiAgICAgICAgICB0ZXJtaW5hbE5vZGUgPSBuZXcgQ2xhc3MocGFyZW50Tm9kZSwgc2lnbmlmaWNhbnRUb2tlbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHJldHVybiB0ZXJtaW5hbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgc2lnbmlmaWNhbnRUb2tlbiA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHBhcmVudE5vZGUsIHNpZ25pZmljYW50VG9rZW4sIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TaWduaWZpY2FudFRva2VuKENsYXNzLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoc2lnbmlmaWNhbnRUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaWduaWZpY2FudFRva2VuID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFRlcm1pbmFsTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgdGVybWluYWxOb2RlID0gbmV3IENsYXNzKHBhcmVudE5vZGUsIHNpZ25pZmljYW50VG9rZW4sIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRlcm1pbmFsTm9kZSIsInBhcmVudE5vZGUiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0UGFyZW50Tm9kZSIsImdldFNpZ25pZmljYW50VG9rZW4iLCJzZXRQYXJlbnROb2RlIiwic2V0U2lnbmlmaWNhbnRUb2tlbiIsImlzU3RhcnRPZkNvbnRlbnROb2RlIiwic3RhcnRPZkNvbnRlbnROb2RlIiwiaXNOb1doaXRlc3BhY2VOb2RlIiwibm9XaGl0ZXNwYWNlTm9kZSIsImlzRXBzaWxvbk5vZGUiLCJlcHNpbG9uTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXRUeXBlIiwiZ2V0Q29udGVudCIsImdldFByZWNlZGVuY2UiLCJwcmVjZWRlbmNlIiwiaXNMb3dlclByZWNlZGVuY2UiLCJwYXJlbnRSdWxlTmFtZSIsInBhcmVudFByZWNlZGVuY2UiLCJsb3dlclByZWNlZGVuY2UiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsInNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJpbmRleE9mIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VucyIsInB1c2giLCJnZXRBbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JOb2RlcyIsImFuY2VzdG9yTm9kZSIsImlzSW5jbHVkZWRJbiIsIm5vZGUiLCJpbmNsdWRlZEluIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic29tZSIsImNoaWxkTm9kZSIsImluY2x1ZGVkSW5DaGlsZE5vZGUiLCJtYXRjaCIsImRlcHRoIiwiSW5maW5pdHkiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJhc1BhcnNlVHJlZSIsInRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIlRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJjbG9uZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsIkNsYXNzIiwiY29uc3RydWN0b3IiLCJmcm9tTm90aGluZyIsInVuZGVmaW5lZCIsImZyb21TaWduaWZpY2FudFRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUlxQkE7OzttRUFGYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuQixJQUFBLEFBQU1BLDZCQUFOO2FBQU1BLGFBQ1BDLFVBQVUsRUFBRUMsZ0JBQWdCO2dDQURyQkY7UUFFakIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUdBOztrQkFIUEY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFVBQVU7WUFDeEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLGdCQUFnQjtZQUM5Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjSixVQUFVO2dCQUN0QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7WUFDcEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsb0JBQW9CSixnQkFBZ0I7Z0JBQ2xDLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUdBO1lBQzFCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLHFCQUFxQjtnQkFFM0IsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxtQkFBbUI7Z0JBRXpCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsY0FBYztnQkFFcEIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxlQUFlO2dCQUVyQixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGtCQUFrQjtnQkFFeEIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBWSxPQUFPLElBQUksQ0FBQ2YsZ0JBQWdCLENBQUNlLE9BQU87WUFBSTs7O1lBRXBEQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQWUsT0FBTyxJQUFJLENBQUNoQixnQkFBZ0IsQ0FBQ2dCLFVBQVU7WUFBSTs7O1lBRTFEQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsYUFBYTtnQkFFbkIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JDLGNBQWMsRUFBRUMsZ0JBQWdCO2dCQUNoRCxJQUFNQyxrQkFBa0I7Z0JBRXhCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsOEJBQThCQyxNQUFNO2dCQUNsQyxJQUFNQyx3QkFBd0IsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQ0YsU0FDdERHLDZCQUE2QkYsdUJBQXVCLEdBQUc7Z0JBRTdELE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsNkJBQTZCSixNQUFNO2dCQUNqQyxJQUFNQyx3QkFBd0IsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQ0YsU0FDdERLLDRCQUE0QkosdUJBQXVCLEdBQUc7Z0JBRTVELE9BQU9JO1lBQ1Q7OztZQUVBSCxLQUFBQTttQkFBQUEsU0FBQUEseUJBQXlCRixNQUFNO2dCQUM3QixJQUFJQyx3QkFBd0I7Z0JBRTVCLElBQUksSUFBSSxDQUFDekIsZ0JBQWdCLEtBQUssTUFBTTtvQkFDbEN5Qix3QkFBd0JELE9BQU9NLE9BQU8sQ0FBQyxJQUFJLENBQUM5QixnQkFBZ0I7Z0JBQzlEO2dCQUVBLE9BQU95QjtZQUNUOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO29CQUFxQkMsb0JBQUFBLGlFQUFvQixFQUFFO2dCQUN6QyxJQUFJLElBQUksQ0FBQ2hDLGdCQUFnQixLQUFLLE1BQU07b0JBQ2xDZ0Msa0JBQWtCQyxJQUFJLENBQUMsSUFBSSxDQUFDakMsZ0JBQWdCO2dCQUM5QztnQkFFQSxPQUFPZ0M7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxnQkFBZ0IsRUFBRTtnQkFFeEIsSUFBSXBDLGFBQWEsSUFBSSxDQUFDQSxVQUFVO2dCQUVoQyxNQUFPQSxlQUFlLEtBQU07b0JBQzFCLElBQU1xQyxlQUFlckMsWUFBYSxHQUFHO29CQUVyQ29DLGNBQWNGLElBQUksQ0FBQ0c7b0JBRW5CckMsYUFBYUEsV0FBV0UsYUFBYTtnQkFDdkM7Z0JBRUEsT0FBT2tDO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYUMsSUFBSTs7Z0JBQ2YsSUFBSUMsYUFBYTtnQkFFakIsSUFBSSxJQUFJLEtBQUtELE1BQU07b0JBQ2pCQyxhQUFhO2dCQUNmLE9BQU87b0JBQ0wsSUFBTUMsc0JBQXNCRixLQUFLekIsaUJBQWlCO29CQUVsRCxJQUFJMkIscUJBQXFCO3dCQUN2QixJQUFNMUIsa0JBQWtCd0IsTUFDbEJHLGFBQWEzQixnQkFBZ0I0QixhQUFhO3dCQUVoREgsYUFBYUUsV0FBV0UsSUFBSSxDQUFDLFNBQUNDOzRCQUM1QixJQUFNQyxzQkFBc0IsTUFBS1IsWUFBWSxDQUFDTzs0QkFFOUMsSUFBSUMscUJBQXFCO2dDQUN2QixPQUFPOzRCQUNUO3dCQUNGO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9OO1lBQ1Q7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTVIsSUFBSTtvQkFBRVMsUUFBQUEsaUVBQVFDLFVBQVVDLFVBQUFBLGlFQUFVO2dCQUN0QyxJQUFJQyxVQUFVO2dCQUVkLElBQU1DLG1CQUFtQmIsS0FBSzNCLGNBQWM7Z0JBRTVDLElBQUl3QyxrQkFBa0I7b0JBQ3BCLElBQU12QyxlQUFlMEIsTUFDZnRDLG1CQUFtQlksYUFBYVYsbUJBQW1CO29CQUV6RGdELFVBQVVELFVBQ0csSUFBSSxDQUFDakQsZ0JBQWdCLEtBQUtBLG1CQUN4QixJQUFJLENBQUNBLGdCQUFnQixDQUFDOEMsS0FBSyxDQUFDOUM7Z0JBQzdDO2dCQUVBLE9BQU9rRDtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLFlBQVk1QixNQUFNO2dCQUNoQixJQUFNWixlQUFlLElBQUksRUFDbkJ5Qyx3QkFBd0JDLHFCQUFxQixDQUFDQyx5QkFBeUIsQ0FBQzNDLGNBQWNZLFNBQ3RGZ0MsWUFBWUgsdUJBQXdCLEdBQUc7Z0JBRTdDLE9BQU9HO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQU0sSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUdDLHFCQUFILFVBQUEsT0FBQSxPQUFBLEdBQUEsT0FBQSxNQUFBO29CQUFHQSxtQkFBSCxRQUFBLFNBQUEsQ0FBQSxLQUFxQjs7Z0JBQ3pCLElBQU1DLFFBQVEsSUFBSSxDQUFDQyxXQUFXLEVBQ3hCN0QsYUFBYSxNQUNiQyxtQkFBbUIsSUFBSSxDQUFDQSxnQkFBZ0IsRUFDeENZLGVBQWUsV0FBSStDLE9BQUo7b0JBQVU1RDtvQkFBWUM7aUJBQXdDLENBQTlELE9BQXdDLHFCQUFHMEQ7Z0JBRWhFLE9BQU85QztZQUNUOzs7O1lBRU9pRCxLQUFBQTttQkFBUCxTQUFPQSxZQUFZRixLQUFLO2dCQUFFLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHRCxxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLFFBQUEsT0FBQSxHQUFBLE9BQUEsTUFBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjs7Z0JBQzdDLElBQUlDLFVBQVVHLFdBQVc7b0JBQ3ZCSCxRQWpMZTdELGNBaUxPLEdBQUc7Z0JBQzNCO2dCQUVBLElBQU1DLGFBQWEsTUFDYkMsbUJBQW1CLE1BQ25CWSxlQUFlLFdBQUkrQyxPQUFKO29CQUFVNUQ7b0JBQVlDO2lCQUF3QyxDQUE5RCxPQUF3QyxxQkFBRzBEO2dCQUVoRSxPQUFPOUM7WUFDVDs7O1lBRU9tRCxLQUFBQTttQkFBUCxTQUFPQSxxQkFBcUJKLEtBQUssRUFBRTNELGdCQUFnQjtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBRzBELHFCQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsUUFBQSxPQUFBLEdBQUEsT0FBQSxNQUFBO29CQUFHQSxtQkFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQXFCOztnQkFDeEUsSUFBSTFELHFCQUFxQjhELFdBQVc7b0JBQ2xDOUQsbUJBQW1CMkQsT0FBTyxHQUFHO29CQUU3QkEsUUEvTGU3RCxjQStMTyxHQUFHO2dCQUMzQjtnQkFFQSxJQUFNQyxhQUFhLE1BQ2JhLGVBQWUsV0FBSStDLE9BQUo7b0JBQVU1RDtvQkFBWUM7aUJBQXdDLENBQTlELE9BQXdDLHFCQUFHMEQ7Z0JBRWhFLE9BQU85QztZQUNUOzs7V0F0TW1CZCJ9
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL3Rlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvdGVybWluYWxOb2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudE5vZGUsIHNpZ25pZmljYW50VG9rZW4pIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICAgIHRoaXMuc2lnbmlmaWNhbnRUb2tlbiA9IHNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW47XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0U2lnbmlmaWNhbnRUb2tlbihzaWduaWZpY2FudFRva2VuKSB7XG4gICAgdGhpcy5zaWduaWZpY2FudFRva2VuID0gc2lnbmlmaWNhbnRUb2tlbjtcbiAgfVxuXG4gIGlzU3RhcnRPZkNvbnRlbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZDb250ZW50Tm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHN0YXJ0T2ZDb250ZW50Tm9kZTtcbiAgfVxuXG4gIGlzTm9XaGl0ZXNwYWNlTm9kZSgpIHtcbiAgICBjb25zdCBub1doaXRlc3BhY2VOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9XaGl0ZXNwYWNlTm9kZTtcbiAgfVxuXG4gIGlzRXBzaWxvbk5vZGUoKSB7XG4gICAgY29uc3QgZXBzaWxvbk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBlcHNpbG9uTm9kZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRydWU7XG4gICAgXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7IHJldHVybiB0aGlzLnNpZ25pZmljYW50VG9rZW4uZ2V0VHlwZSgpOyB9XG5cbiAgZ2V0Q29udGVudCgpIHsgcmV0dXJuIHRoaXMuc2lnbmlmaWNhbnRUb2tlbi5nZXRDb250ZW50KCk7IH1cblxuICBnZXRQcmVjZWRlbmNlKCkgIHtcbiAgICBjb25zdCBwcmVjZWRlbmNlID0gbnVsbDtcblxuICAgIHJldHVybiBwcmVjZWRlbmNlO1xuICB9XG5cbiAgaXNMb3dlclByZWNlZGVuY2UocGFyZW50UnVsZU5hbWUsIHBhcmVudFByZWNlZGVuY2UpIHtcbiAgICBjb25zdCBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcblxuICAgIHJldHVybiBsb3dlclByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0aGlzLmdldFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gc2lnbmlmaWNhbnRUb2tlbkluZGV4OyAvLy9cblxuICAgIHJldHVybiBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcbiAgfVxuXG4gIGdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdGhpcy5nZXRTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gc2lnbmlmaWNhbnRUb2tlbkluZGV4OyAvLy9cblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBzaWduaWZpY2FudFRva2VuSW5kZXggPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuc2lnbmlmaWNhbnRUb2tlbiAhPT0gbnVsbCkge1xuICAgICAgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gdG9rZW5zLmluZGV4T2YodGhpcy5zaWduaWZpY2FudFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIGlmICh0aGlzLnNpZ25pZmljYW50VG9rZW4gIT09IG51bGwpIHtcbiAgICAgIHNpZ25pZmljYW50VG9rZW5zLnB1c2godGhpcy5zaWduaWZpY2FudFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRBbmNlc3Rvck5vZGVzKCkge1xuICAgIGNvbnN0IGFuY2VzdG9yTm9kZXMgPSBbXTtcblxuICAgIGxldCBwYXJlbnROb2RlID0gdGhpcy5wYXJlbnROb2RlO1xuXG4gICAgd2hpbGUgKHBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yTm9kZSA9IHBhcmVudE5vZGU7ICAvLy9cblxuICAgICAgYW5jZXN0b3JOb2Rlcy5wdXNoKGFuY2VzdG9yTm9kZSk7XG5cbiAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLmdldFBhcmVudE5vZGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JOb2RlcztcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICB0ZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBUZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbVRlcm1pbmFsTm9kZUFuZFRva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gdGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgc2lnbmlmaWNhbnRUb2tlbiA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuKCk7XG5cbiAgICAgIG1hdGNoZXMgPSBleGFjdGx5ID9cbiAgICAgICAgICAgICAgICAgICh0aGlzLnNpZ25pZmljYW50VG9rZW4gPT09IHNpZ25pZmljYW50VG9rZW4pIDpcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lnbmlmaWNhbnRUb2tlbi5tYXRjaChzaWduaWZpY2FudFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIGNsb25lKC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IENsYXNzID0gdGhpcy5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwYXJlbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBzaWduaWZpY2FudFRva2VuID0gdGhpcy5zaWduaWZpY2FudFRva2VuLFxuICAgICAgICAgIHRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhwYXJlbnROb2RlLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcbiAgICB0aGlzLnNpZ25pZmljYW50VG9rZW4gPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKENsYXNzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoQ2xhc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgQ2xhc3MgPSBUZXJtaW5hbE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHNpZ25pZmljYW50VG9rZW4gPSBudWxsLFxuICAgICAgICAgIHRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhwYXJlbnROb2RlLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU2lnbmlmaWNhbnRUb2tlbihDbGFzcywgc2lnbmlmaWNhbnRUb2tlbiwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKHNpZ25pZmljYW50VG9rZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2lnbmlmaWNhbnRUb2tlbiA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBUZXJtaW5hbE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhwYXJlbnROb2RlLCBzaWduaWZpY2FudFRva2VuLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIFxuICAgIHJldHVybiB0ZXJtaW5hbE5vZGU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJUZXJtaW5hbE5vZGUiLCJwYXJlbnROb2RlIiwic2lnbmlmaWNhbnRUb2tlbiIsImdldFBhcmVudE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VuIiwic2V0UGFyZW50Tm9kZSIsInNldFNpZ25pZmljYW50VG9rZW4iLCJpc1N0YXJ0T2ZDb250ZW50Tm9kZSIsInN0YXJ0T2ZDb250ZW50Tm9kZSIsImlzTm9XaGl0ZXNwYWNlTm9kZSIsIm5vV2hpdGVzcGFjZU5vZGUiLCJpc0Vwc2lsb25Ob2RlIiwiZXBzaWxvbk5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0VHlwZSIsImdldENvbnRlbnQiLCJnZXRQcmVjZWRlbmNlIiwicHJlY2VkZW5jZSIsImlzTG93ZXJQcmVjZWRlbmNlIiwicGFyZW50UnVsZU5hbWUiLCJwYXJlbnRQcmVjZWRlbmNlIiwibG93ZXJQcmVjZWRlbmNlIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJzaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRTaWduaWZpY2FudFRva2VuSW5kZXgiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiaW5kZXhPZiIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJwdXNoIiwiZ2V0QW5jZXN0b3JOb2RlcyIsImFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGUiLCJhc1BhcnNlVHJlZSIsInRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIlRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJtYXRjaCIsIm5vZGUiLCJkZXB0aCIsIkluZmluaXR5IiwiZXhhY3RseSIsIm1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNvbnN0cnVjdG9yIiwiZGVzdHJveSIsImZyb21Ob3RoaW5nIiwidW5kZWZpbmVkIiwiZnJvbVNpZ25pZmljYW50VG9rZW4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7O21FQUZhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5CLElBQUEsQUFBTUEsNkJBQU47YUFBTUEsYUFDUEMsVUFBVSxFQUFFQyxnQkFBZ0I7Z0NBRHJCRjtRQUVqQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBR0E7O2tCQUhQRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsVUFBVTtZQUN4Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsZ0JBQWdCO1lBQzlCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGNBQWNKLFVBQVU7Z0JBQ3RCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtZQUNwQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxvQkFBb0JKLGdCQUFnQjtnQkFDbEMsSUFBSSxDQUFDQSxnQkFBZ0IsR0FBR0E7WUFDMUI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMscUJBQXFCO2dCQUUzQixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLG1CQUFtQjtnQkFFekIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxjQUFjO2dCQUVwQixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGVBQWU7Z0JBRXJCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsa0JBQWtCO2dCQUV4QixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFZLE9BQU8sSUFBSSxDQUFDZixnQkFBZ0IsQ0FBQ2UsT0FBTztZQUFJOzs7WUFFcERDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBZSxPQUFPLElBQUksQ0FBQ2hCLGdCQUFnQixDQUFDZ0IsVUFBVTtZQUFJOzs7WUFFMURDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxhQUFhO2dCQUVuQixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQkMsY0FBYyxFQUFFQyxnQkFBZ0I7Z0JBQ2hELElBQU1DLGtCQUFrQjtnQkFFeEIsT0FBT0E7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSw4QkFBOEJDLE1BQU07Z0JBQ2xDLElBQU1DLHdCQUF3QixJQUFJLENBQUNDLHdCQUF3QixDQUFDRixTQUN0REcsNkJBQTZCRix1QkFBdUIsR0FBRztnQkFFN0QsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSw2QkFBNkJKLE1BQU07Z0JBQ2pDLElBQU1DLHdCQUF3QixJQUFJLENBQUNDLHdCQUF3QixDQUFDRixTQUN0REssNEJBQTRCSix1QkFBdUIsR0FBRztnQkFFNUQsT0FBT0k7WUFDVDs7O1lBRUFILEtBQUFBO21CQUFBQSxTQUFBQSx5QkFBeUJGLE1BQU07Z0JBQzdCLElBQUlDLHdCQUF3QjtnQkFFNUIsSUFBSSxJQUFJLENBQUN6QixnQkFBZ0IsS0FBSyxNQUFNO29CQUNsQ3lCLHdCQUF3QkQsT0FBT00sT0FBTyxDQUFDLElBQUksQ0FBQzlCLGdCQUFnQjtnQkFDOUQ7Z0JBRUEsT0FBT3lCO1lBQ1Q7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7b0JBQXFCQyxvQkFBQUEsaUVBQW9CLEVBQUU7Z0JBQ3pDLElBQUksSUFBSSxDQUFDaEMsZ0JBQWdCLEtBQUssTUFBTTtvQkFDbENnQyxrQkFBa0JDLElBQUksQ0FBQyxJQUFJLENBQUNqQyxnQkFBZ0I7Z0JBQzlDO2dCQUVBLE9BQU9nQztZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGdCQUFnQixFQUFFO2dCQUV4QixJQUFJcEMsYUFBYSxJQUFJLENBQUNBLFVBQVU7Z0JBRWhDLE1BQU9BLGVBQWUsS0FBTTtvQkFDMUIsSUFBTXFDLGVBQWVyQyxZQUFhLEdBQUc7b0JBRXJDb0MsY0FBY0YsSUFBSSxDQUFDRztvQkFFbkJyQyxhQUFhQSxXQUFXRSxhQUFhO2dCQUN2QztnQkFFQSxPQUFPa0M7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZYixNQUFNO2dCQUNoQixJQUFNWixlQUFlLElBQUksRUFDbkIwQix3QkFBd0JDLHFCQUFxQixDQUFDQyx5QkFBeUIsQ0FBQzVCLGNBQWNZLFNBQ3RGaUIsWUFBWUgsdUJBQXdCLEdBQUc7Z0JBRTdDLE9BQU9HO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsSUFBSTtvQkFBRUMsUUFBQUEsaUVBQVFDLFVBQVVDLFVBQUFBLGlFQUFVO2dCQUN0QyxJQUFJQyxVQUFVO2dCQUVkLElBQU1DLG1CQUFtQkwsS0FBS2hDLGNBQWM7Z0JBRTVDLElBQUlxQyxrQkFBa0I7b0JBQ3BCLElBQU1wQyxlQUFlK0IsTUFDZjNDLG1CQUFtQlksYUFBYVYsbUJBQW1CO29CQUV6RDZDLFVBQVVELFVBQ0csSUFBSSxDQUFDOUMsZ0JBQWdCLEtBQUtBLG1CQUN4QixJQUFJLENBQUNBLGdCQUFnQixDQUFDMEMsS0FBSyxDQUFDMUM7Z0JBQzdDO2dCQUVBLE9BQU8rQztZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFNLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHQyxxQkFBSCxVQUFBLE9BQUEsT0FBQSxHQUFBLE9BQUEsTUFBQTtvQkFBR0EsbUJBQUgsUUFBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUN6QixJQUFNQyxRQUFRLElBQUksQ0FBQ0MsV0FBVyxFQUN4QnJELGFBQWEsTUFDYkMsbUJBQW1CLElBQUksQ0FBQ0EsZ0JBQWdCLEVBQ3hDWSxlQUFlLFdBQUl1QyxPQUFKO29CQUFVcEQ7b0JBQVlDO2lCQUF3QyxDQUE5RCxPQUF3QyxxQkFBR2tEO2dCQUVoRSxPQUFPdEM7WUFDVDs7O1lBRUF5QyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSSxDQUFDdEQsVUFBVSxHQUFHO2dCQUNsQixJQUFJLENBQUNDLGdCQUFnQixHQUFHO1lBQzFCOzs7O1lBRU9zRCxLQUFBQTttQkFBUCxTQUFPQSxZQUFZSCxLQUFLO2dCQUFFLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHRCxxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLFFBQUEsT0FBQSxHQUFBLE9BQUEsTUFBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjs7Z0JBQzdDLElBQUlDLFVBQVVJLFdBQVc7b0JBQ3ZCSixRQTdKZXJELGNBNkpPLEdBQUc7Z0JBQzNCO2dCQUVBLElBQU1DLGFBQWEsTUFDYkMsbUJBQW1CLE1BQ25CWSxlQUFlLFdBQUl1QyxPQUFKO29CQUFVcEQ7b0JBQVlDO2lCQUF3QyxDQUE5RCxPQUF3QyxxQkFBR2tEO2dCQUVoRSxPQUFPdEM7WUFDVDs7O1lBRU80QyxLQUFBQTttQkFBUCxTQUFPQSxxQkFBcUJMLEtBQUssRUFBRW5ELGdCQUFnQjtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR2tELHFCQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsUUFBQSxPQUFBLEdBQUEsT0FBQSxNQUFBO29CQUFHQSxtQkFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQXFCOztnQkFDeEUsSUFBSWxELHFCQUFxQnVELFdBQVc7b0JBQ2xDdkQsbUJBQW1CbUQsT0FBTyxHQUFHO29CQUU3QkEsUUEzS2VyRCxjQTJLTyxHQUFHO2dCQUMzQjtnQkFFQSxJQUFNQyxhQUFhLE1BQ2JhLGVBQWUsV0FBSXVDLE9BQUo7b0JBQVVwRDtvQkFBWUM7aUJBQXdDLENBQTlELE9BQXdDLHFCQUFHa0Q7Z0JBRWhFLE9BQU90QztZQUNUOzs7V0FsTG1CZCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-parsers",
3
3
  "author": "James Smith",
4
- "version": "23.0.114",
4
+ "version": "23.0.116",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
@@ -16,8 +16,8 @@
16
16
  "devDependencies": {
17
17
  "@swc/core": "^1.5.6",
18
18
  "easy": "^23.0.1",
19
- "easy-layout": "^6.0.233",
20
- "easy-with-style": "^3.0.470",
19
+ "easy-layout": "^6.0.234",
20
+ "easy-with-style": "^3.0.472",
21
21
  "esbuild": "^0.9.6",
22
22
  "express": "^4.17.1",
23
23
  "juxtapose": "^4.0.117",
package/src/index.js CHANGED
@@ -4,6 +4,8 @@ export { default as BNFParser } from "./bnf/parser";
4
4
  export { default as BasicParser } from "./basic/parser";
5
5
  export { default as CommonParser } from "./common/parser";
6
6
 
7
+ export { default as nodeMixins } from "./mixins/node";
8
+
7
9
  export { default as rulesUtilities } from "./utilities/rules";
8
10
  export { default as parserUtilities } from "./utilities/parser";
9
11
 
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+
3
+ import { arrayUtilities } from "necessary";
4
+
5
+ const { first, forwardsSome, backwardsSome } = arrayUtilities;
6
+
7
+ function getMultiplicity() {
8
+ const childNodesLength = this.childNodes.length,
9
+ multiplicity = childNodesLength; ///
10
+
11
+ return multiplicity;
12
+ }
13
+
14
+ function mapChildNode(callback) { return this.childNodes.map(callback); }
15
+
16
+ function someChildNode(callback) { return this.childNodes.some(callback); }
17
+
18
+ function findChildNode(callback) { return this.childNodes.find(callback); }
19
+
20
+ function everyChildNode(callback) { return this.childNodes.every(callback); }
21
+
22
+ function filterChildNode(callback) { return this.childNodes.filter(callback); }
23
+
24
+ function reduceChildNode(callback, initialValue) { return this.childNodes.reduce(callback, initialValue); }
25
+
26
+ function forEachChildNode(callback) { this.childNodes.forEach(callback); }
27
+
28
+ function forwardsSomeChildNode(callback) { return forwardsSome(this.childNodes, callback); }
29
+
30
+ function backwardsSomeChildNode(callback) { return backwardsSome(this.childNodes, callback); }
31
+
32
+ function indexOfChildNode(childNode) { return this.childNodes.indexOf(childNode); }
33
+
34
+ function setChildNodesParentNode(childNodes) {
35
+ if (childNodes === undefined) {
36
+ childNodes = [
37
+ ...this.childNodes
38
+ ];
39
+ }
40
+
41
+ const parentNode = this;
42
+
43
+ childNodes.forEach((childNode) => {
44
+ childNode.setParentNode(parentNode);
45
+ });
46
+ }
47
+
48
+ function resetChildNodesParentNode(childNodes) {
49
+ if (childNodes === undefined) {
50
+ childNodes = [
51
+ ...this.childNodes
52
+ ];
53
+ }
54
+
55
+ const parentNode = null;
56
+
57
+ childNodes.forEach((childNode) => {
58
+ childNode.setParentNode(parentNode);
59
+ });
60
+ }
61
+
62
+ function addChildNode(addedChildNode, startIndex) {
63
+ const addedChildNodes = [
64
+ addedChildNode
65
+ ];
66
+
67
+ this.addChildNodes(addedChildNodes, startIndex);
68
+ }
69
+
70
+ function addChildNodes(addedChildNodes, startIndex) {
71
+ const deleteCount = 0;
72
+
73
+ this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
74
+ }
75
+
76
+ function removeChildNode(removedChildNode) {
77
+ let removedChildNodes;
78
+
79
+ removedChildNodes = [
80
+ removedChildNode
81
+ ];
82
+
83
+ removedChildNodes = this.removeChildNodes(removedChildNodes);
84
+
85
+ return removedChildNodes;
86
+ }
87
+
88
+ function removeChildNodes(removedChildNodes) {
89
+ if (removedChildNodes === undefined) {
90
+ removedChildNodes = [
91
+ ...this.childNodes
92
+ ];
93
+ }
94
+
95
+ const removedChildNodesLength = removedChildNodes.length;
96
+
97
+ if (removedChildNodesLength === 0) {
98
+ return;
99
+ }
100
+
101
+ const firstReplacedChildNode = first(removedChildNodes),
102
+ firstIndex = this.childNodes.indexOf(firstReplacedChildNode),
103
+ startIndex = firstIndex, ///
104
+ deleteCount = removedChildNodesLength, ///
105
+ addedChildNodes = [];
106
+
107
+ removedChildNodes = this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
108
+
109
+ return removedChildNodes;
110
+ }
111
+
112
+ function replaceChildNode(replacedChildNode, replacementChildNodes) {
113
+ const replacedChildNodes = [
114
+ replacedChildNode
115
+ ];
116
+
117
+ this.replaceChildNodes(replacedChildNodes, replacementChildNodes);
118
+ }
119
+
120
+ function replaceChildNodes(replacedChildNodes, replacementChildNodes) {
121
+ const replacedChildNodesLength = replacedChildNodes.length,
122
+ firstReplacedChildNode = first(replacedChildNodes),
123
+ firstIndex = this.childNodes.indexOf(firstReplacedChildNode),
124
+ startIndex = firstIndex, ///
125
+ deleteCount = replacedChildNodesLength; ///
126
+
127
+ this.spliceChildNodes(startIndex, deleteCount, replacementChildNodes);
128
+ }
129
+
130
+ function appendChildNode(appendedChildNode) {
131
+ const appendedChildNodes = [
132
+ appendedChildNode
133
+ ];
134
+
135
+ this.appendChildNodes(appendedChildNodes);
136
+ }
137
+
138
+ function appendChildNodes(appendedChildNodes) {
139
+ const addedChildNodes = appendedChildNodes, ///
140
+ multiplicity = this.getMultiplicity(),
141
+ startIndex = multiplicity; ///
142
+
143
+ this.addChildNodes(addedChildNodes, startIndex);
144
+ }
145
+
146
+ function prependChildNode(prependedChildNode) {
147
+ const prependedChildNodes = [
148
+ prependedChildNode
149
+ ];
150
+
151
+ this.prependChildNodes(prependedChildNodes);
152
+ }
153
+
154
+ function prependChildNodes(prependedChildNodes) {
155
+ const addedChildNodes = prependedChildNodes, ///
156
+ startIndex = 0;
157
+
158
+ this.addChildNodes(addedChildNodes, startIndex);
159
+ }
160
+
161
+ function spliceChildNodes(startIndex, deleteCount, addedChildNodes = []) {
162
+ const removedChildNodes = this.childNodes.splice(startIndex, deleteCount, ...addedChildNodes);
163
+
164
+ this.resetChildNodesParentNode(removedChildNodes);
165
+
166
+ this.setChildNodesParentNode(addedChildNodes);
167
+
168
+ return removedChildNodes;
169
+ }
170
+
171
+ function sliceChildNodes(startIndex, endIndex = Infinity) {
172
+ const childNodes = this.childNodes.slice(startIndex, endIndex);
173
+
174
+ return childNodes;
175
+ }
176
+
177
+ const nodeMixins = {
178
+ getMultiplicity,
179
+ mapChildNode,
180
+ someChildNode,
181
+ findChildNode,
182
+ everyChildNode,
183
+ filterChildNode,
184
+ reduceChildNode,
185
+ forEachChildNode,
186
+ forwardsSomeChildNode,
187
+ backwardsSomeChildNode,
188
+ indexOfChildNode,
189
+ setChildNodesParentNode,
190
+ resetChildNodesParentNode,
191
+ addChildNode,
192
+ addChildNodes,
193
+ removeChildNode,
194
+ removeChildNodes,
195
+ replaceChildNode,
196
+ replaceChildNodes,
197
+ appendChildNode,
198
+ appendChildNodes,
199
+ prependChildNode,
200
+ prependChildNodes,
201
+ spliceChildNodes,
202
+ sliceChildNodes
203
+ };
204
+
205
+ export default nodeMixins;
@@ -3,9 +3,10 @@
3
3
  import { arrayUtilities } from "necessary";
4
4
  import { specialSymbols } from "occam-lexers";
5
5
 
6
+ import nodeMixins from "../mixins/node";
6
7
  import NonTerminalNodeParseTree from "../parseTree/nonTerminalNode";
7
8
 
8
- const { first, match, forwardsSome, backwardsSome } = arrayUtilities,
9
+ const { first, match } = arrayUtilities,
9
10
  { opaque: opaqueSpecialSymbol , semiOpaque: semiOpaqueSpecialSymbol } = specialSymbols;
10
11
 
11
12
  export default class NonTerminalNode {
@@ -41,6 +42,10 @@ export default class NonTerminalNode {
41
42
  this.ruleName = ruleName;
42
43
  }
43
44
 
45
+ setParentNode(parentNode) {
46
+ this.parentNode = parentNode;
47
+ }
48
+
44
49
  setChildNodes(childNodes) {
45
50
  const startIndex = 0,
46
51
  deleteCount = Infinity,
@@ -49,18 +54,14 @@ export default class NonTerminalNode {
49
54
  this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
50
55
  }
51
56
 
52
- setParentNode(parentNode) {
53
- this.parentNode = parentNode;
57
+ setOpacity(opacity) {
58
+ this.opacity = opacity;
54
59
  }
55
60
 
56
61
  setPrecedence(precedence) {
57
62
  this.precedence = precedence;
58
63
  }
59
64
 
60
- setOpacity(opacity) {
61
- this.opacity = opacity;
62
- }
63
-
64
65
  isOpaque() {
65
66
  const opaque = (this.opacity === opaqueSpecialSymbol);
66
67
 
@@ -220,136 +221,12 @@ export default class NonTerminalNode {
220
221
  return unprecedented;
221
222
  }
222
223
 
223
- mapChildNode(callback) { return this.childNodes.map(callback); }
224
-
225
- someChildNode(callback) { return this.childNodes.some(callback); }
226
-
227
- findChildNode(callback) { return this.childNodes.find(callback); }
228
-
229
- everyChildNode(callback) { return this.childNodes.every(callback); }
230
-
231
- filterChildNode(callback) { return this.childNodes.filter(callback); }
232
-
233
- reduceChildNode(callback, initialValue) { return this.childNodes.reduce(callback, initialValue); }
234
-
235
- forEachChildNode(callback) { this.childNodes.forEach(callback); }
236
-
237
- forwardsSomeChildNode(callback) { return forwardsSome(this.childNodes, callback); }
238
-
239
- backwardsSomeChildNode(callback) { return backwardsSome(this.childNodes, callback); }
240
-
241
- indexOfChildNode(childNode) { return this.childNodes.indexOf(childNode); }
242
-
243
- setChildNodesParentNode(childNodes) {
244
- if (childNodes === undefined) {
245
- childNodes = [
246
- ...this.childNodes
247
- ];
248
- }
249
-
250
- const parentNode = this;
251
-
252
- childNodes.forEach((childNode) => {
253
- childNode.setParentNode(parentNode);
254
- });
255
- }
256
-
257
- resetChildNodesParentNode(childNodes) {
258
- if (childNodes === undefined) {
259
- childNodes = [
260
- ...this.childNodes
261
- ];
262
- }
263
-
264
- const parentNode = null;
265
-
266
- childNodes.forEach((childNode) => {
267
- childNode.setParentNode(parentNode);
268
- });
269
- }
270
-
271
- addChildNode(addedChildNode, startIndex) {
272
- const addedChildNodes = [
273
- addedChildNode
274
- ];
275
-
276
- this.addChildNodes(addedChildNodes, startIndex);
277
- }
278
-
279
- addChildNodes(addedChildNodes, startIndex) {
280
- const deleteCount = 0;
281
-
282
- this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
283
- }
284
-
285
- removeChildNode(removedChildNode) {
286
- let removedChildNodes;
287
-
288
- removedChildNodes = [
289
- removedChildNode
290
- ];
291
-
292
- removedChildNodes = this.removeChildNodes(removedChildNodes);
293
-
294
- return removedChildNodes;
295
- }
296
-
297
- removeChildNodes(removedChildNodes) {
298
- if (removedChildNodes === undefined) {
299
- removedChildNodes = [
300
- ...this.childNodes
301
- ];
302
- }
303
-
304
- const removedChildNodesLength = removedChildNodes.length;
305
-
306
- if (removedChildNodesLength === 0) {
307
- return;
308
- }
309
-
310
- const firstReplacedChildNode = first(removedChildNodes),
311
- firstIndex = this.childNodes.indexOf(firstReplacedChildNode),
312
- startIndex = firstIndex, ///
313
- deleteCount = removedChildNodesLength, ///
314
- addedChildNodes = [];
315
-
316
- removedChildNodes = this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
317
-
318
- return removedChildNodes;
319
- }
320
-
321
- replaceChildNode(replacedChildNode, replacementChildNodes) {
322
- const replacedChildNodes = [
323
- replacedChildNode
324
- ];
325
-
326
- this.replaceChildNodes(replacedChildNodes, replacementChildNodes);
327
- }
328
-
329
- replaceChildNodes(replacedChildNodes, replacementChildNodes) {
330
- const replacedChildNodesLength = replacedChildNodes.length,
331
- firstReplacedChildNode = first(replacedChildNodes),
332
- firstIndex = this.childNodes.indexOf(firstReplacedChildNode),
333
- startIndex = firstIndex, ///
334
- deleteCount = replacedChildNodesLength; ///
335
-
336
- this.spliceChildNodes(startIndex, deleteCount, replacementChildNodes);
337
- }
338
-
339
- spliceChildNodes(startIndex, deleteCount, addedChildNodes = []) {
340
- const removedChildNodes = this.childNodes.splice(startIndex, deleteCount, ...addedChildNodes);
341
-
342
- this.resetChildNodesParentNode(removedChildNodes);
343
-
344
- this.setChildNodesParentNode(addedChildNodes);
345
-
346
- return removedChildNodes;
347
- }
348
-
349
- sliceChildNodes(startIndex, endIndex = Infinity) {
350
- const childNodes = this.childNodes.slice(startIndex, endIndex);
224
+ asParseTree(tokens) {
225
+ const nonTerminalNode = this, ///
226
+ nonTerminalNodeParseTree = NonTerminalNodeParseTree.fromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
227
+ parseTree = nonTerminalNodeParseTree; ///
351
228
 
352
- return childNodes;
229
+ return parseTree;
353
230
  }
354
231
 
355
232
  match(node, depth = Infinity, exactly = false) {
@@ -398,12 +275,13 @@ export default class NonTerminalNode {
398
275
  return rewrittenNonTerminalNode;
399
276
  }
400
277
 
401
- asParseTree(tokens) {
402
- const nonTerminalNode = this, ///
403
- nonTerminalNodeParseTree = NonTerminalNodeParseTree.fromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
404
- parseTree = nonTerminalNodeParseTree; ///
278
+ destroy() {
279
+ this.forEachChildNode((childNode) => {
280
+ childNode.destroy();
281
+ });
405
282
 
406
- return parseTree;
283
+ this.parentNode = null;
284
+ this.childNodes = null;
407
285
  }
408
286
 
409
287
  clone(...remainingArguments) {
@@ -450,3 +328,5 @@ function cloneChildNodes(childNodes) {
450
328
 
451
329
  return childNodes;
452
330
  }
331
+
332
+ Object.assign(NonTerminalNode.prototype, nodeMixins);
@@ -118,29 +118,12 @@ export default class TerminalNode {
118
118
  return ancestorNodes;
119
119
  }
120
120
 
121
- isIncludedIn(node) {
122
- let includedIn = false;
123
-
124
- if (this === node) {
125
- includedIn = true;
126
- } else {
127
- const nodeNonTerminalNode = node.isNonTerminalNode();
128
-
129
- if (nodeNonTerminalNode) {
130
- const nonTerminalNode = node, ///
131
- childNodes = nonTerminalNode.getChildNodes();
132
-
133
- includedIn = childNodes.some((childNode) => {
134
- const includedInChildNode = this.isIncludedIn(childNode);
135
-
136
- if (includedInChildNode) {
137
- return true;
138
- }
139
- });
140
- }
141
- }
121
+ asParseTree(tokens) {
122
+ const terminalNode = this, ///
123
+ terminalNodeParseTree = TerminalNodeParseTree.fromTerminalNodeAndTokens(terminalNode, tokens),
124
+ parseTree = terminalNodeParseTree; ///
142
125
 
143
- return includedIn;
126
+ return parseTree;
144
127
  }
145
128
 
146
129
  match(node, depth = Infinity, exactly = false) {
@@ -160,14 +143,6 @@ export default class TerminalNode {
160
143
  return matches;
161
144
  }
162
145
 
163
- asParseTree(tokens) {
164
- const terminalNode = this, ///
165
- terminalNodeParseTree = TerminalNodeParseTree.fromTerminalNodeAndTokens(terminalNode, tokens),
166
- parseTree = terminalNodeParseTree; ///
167
-
168
- return parseTree;
169
- }
170
-
171
146
  clone(...remainingArguments) {
172
147
  const Class = this.constructor,
173
148
  parentNode = null,
@@ -177,6 +152,11 @@ export default class TerminalNode {
177
152
  return terminalNode;
178
153
  }
179
154
 
155
+ destroy() {
156
+ this.parentNode = null;
157
+ this.significantToken = null;
158
+ }
159
+
180
160
  static fromNothing(Class, ...remainingArguments) {
181
161
  if (Class === undefined) {
182
162
  Class = TerminalNode; ///