occam-dom 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/example.js +1495 -1305
  2. package/lib/example/constants.js +22 -0
  3. package/lib/example/utilities/query.js +23 -0
  4. package/lib/example/view/div/sizeable.js +2 -2
  5. package/lib/example/view/textarea/expressions.js +143 -0
  6. package/lib/example/view/textarea/outerNodes.js +147 -0
  7. package/lib/example/view/{input/expressionString.js → textarea/parseTree/inner.js} +43 -28
  8. package/lib/{expression/parser.js → example/view/textarea/parseTree/outer.js} +20 -28
  9. package/lib/example/view/textarea/parseTree.js +1 -19
  10. package/lib/example/view.js +26 -20
  11. package/lib/index.js +7 -19
  12. package/lib/node.js +302 -0
  13. package/lib/parseTree/childNodes.js +164 -0
  14. package/lib/parseTree/horizontalBranch.js +120 -0
  15. package/lib/parseTree/node.js +145 -0
  16. package/lib/parseTree/string.js +109 -0
  17. package/lib/parseTree/verticalBranch.js +184 -0
  18. package/lib/parseTree.js +191 -0
  19. package/lib/utilities/node.js +56 -309
  20. package/package.json +3 -2
  21. package/src/example/constants.js +4 -0
  22. package/src/example/utilities/query.js +21 -0
  23. package/src/example/view/div/sizeable.js +1 -1
  24. package/src/example/view/textarea/expressions.js +39 -0
  25. package/src/example/view/textarea/outerNodes.js +48 -0
  26. package/src/example/view/textarea/parseTree/inner.js +24 -0
  27. package/src/example/view/textarea/parseTree/outer.js +17 -0
  28. package/src/example/view/textarea/parseTree.js +0 -18
  29. package/src/example/view.js +44 -32
  30. package/src/index.js +2 -5
  31. package/src/node.js +221 -0
  32. package/src/parseTree/childNodes.js +108 -0
  33. package/src/parseTree/horizontalBranch.js +32 -0
  34. package/src/parseTree/node.js +77 -0
  35. package/src/parseTree/string.js +18 -0
  36. package/src/parseTree/verticalBranch.js +77 -0
  37. package/src/parseTree.js +141 -0
  38. package/src/utilities/node.js +66 -416
  39. package/lib/example/view/textarea/nodes.js +0 -155
  40. package/lib/expression/bnf.js +0 -14
  41. package/lib/expression/entries.js +0 -27
  42. package/lib/expression/lexer.js +0 -145
  43. package/lib/expression.js +0 -113
  44. package/lib/path.js +0 -69
  45. package/lib/query.js +0 -216
  46. package/lib/ruleNames.js +0 -54
  47. package/lib/spread.js +0 -113
  48. package/lib/subExpression.js +0 -101
  49. package/lib/utilities/array.js +0 -67
  50. package/lib/utilities/query.js +0 -39
  51. package/src/example/view/input/expressionString.js +0 -33
  52. package/src/example/view/textarea/nodes.js +0 -55
  53. package/src/expression/bnf.js +0 -63
  54. package/src/expression/entries.js +0 -18
  55. package/src/expression/lexer.js +0 -35
  56. package/src/expression/parser.js +0 -15
  57. package/src/expression.js +0 -82
  58. package/src/path.js +0 -32
  59. package/src/query.js +0 -207
  60. package/src/ruleNames.js +0 -12
  61. package/src/spread.js +0 -104
  62. package/src/subExpression.js +0 -52
  63. package/src/utilities/array.js +0 -30
  64. package/src/utilities/query.js +0 -22
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return VerticalBranchParseTree;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ var _parseTree = /*#__PURE__*/ _interop_require_default(require("../parseTree"));
13
+ var _constants = require("../constants");
14
+ function _assert_this_initialized(self) {
15
+ if (self === void 0) {
16
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
17
+ }
18
+ return self;
19
+ }
20
+ function _call_super(_this, derived, args) {
21
+ derived = _get_prototype_of(derived);
22
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
23
+ }
24
+ function _class_call_check(instance, Constructor) {
25
+ if (!(instance instanceof Constructor)) {
26
+ throw new TypeError("Cannot call a class as a function");
27
+ }
28
+ }
29
+ function _defineProperties(target, props) {
30
+ for(var i = 0; i < props.length; i++){
31
+ var descriptor = props[i];
32
+ descriptor.enumerable = descriptor.enumerable || false;
33
+ descriptor.configurable = true;
34
+ if ("value" in descriptor) descriptor.writable = true;
35
+ Object.defineProperty(target, descriptor.key, descriptor);
36
+ }
37
+ }
38
+ function _create_class(Constructor, protoProps, staticProps) {
39
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
40
+ if (staticProps) _defineProperties(Constructor, staticProps);
41
+ return Constructor;
42
+ }
43
+ function _get(target, property, receiver) {
44
+ if (typeof Reflect !== "undefined" && Reflect.get) {
45
+ _get = Reflect.get;
46
+ } else {
47
+ _get = function get(target, property, receiver) {
48
+ var base = _super_prop_base(target, property);
49
+ if (!base) return;
50
+ var desc = Object.getOwnPropertyDescriptor(base, property);
51
+ if (desc.get) {
52
+ return desc.get.call(receiver || target);
53
+ }
54
+ return desc.value;
55
+ };
56
+ }
57
+ return _get(target, property, receiver || target);
58
+ }
59
+ function _get_prototype_of(o) {
60
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
61
+ return o.__proto__ || Object.getPrototypeOf(o);
62
+ };
63
+ return _get_prototype_of(o);
64
+ }
65
+ function _inherits(subClass, superClass) {
66
+ if (typeof superClass !== "function" && superClass !== null) {
67
+ throw new TypeError("Super expression must either be null or a function");
68
+ }
69
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
70
+ constructor: {
71
+ value: subClass,
72
+ writable: true,
73
+ configurable: true
74
+ }
75
+ });
76
+ if (superClass) _set_prototype_of(subClass, superClass);
77
+ }
78
+ function _interop_require_default(obj) {
79
+ return obj && obj.__esModule ? obj : {
80
+ default: obj
81
+ };
82
+ }
83
+ function _possible_constructor_return(self, call) {
84
+ if (call && (_type_of(call) === "object" || typeof call === "function")) {
85
+ return call;
86
+ }
87
+ return _assert_this_initialized(self);
88
+ }
89
+ function _set_prototype_of(o, p) {
90
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
91
+ o.__proto__ = p;
92
+ return o;
93
+ };
94
+ return _set_prototype_of(o, p);
95
+ }
96
+ function _super_prop_base(object, property) {
97
+ while(!Object.prototype.hasOwnProperty.call(object, property)){
98
+ object = _get_prototype_of(object);
99
+ if (object === null) break;
100
+ }
101
+ return object;
102
+ }
103
+ function _type_of(obj) {
104
+ "@swc/helpers - typeof";
105
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
106
+ }
107
+ function _is_native_reflect_construct() {
108
+ try {
109
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
110
+ } catch (_) {}
111
+ return (_is_native_reflect_construct = function() {
112
+ return !!result;
113
+ })();
114
+ }
115
+ var BAR_CHARACTER = _necessary.characters.BAR_CHARACTER;
116
+ var VerticalBranchParseTree = /*#__PURE__*/ function(ParseTree) {
117
+ _inherits(VerticalBranchParseTree, ParseTree);
118
+ function VerticalBranchParseTree(lines, verticalBranchPosition) {
119
+ _class_call_check(this, VerticalBranchParseTree);
120
+ var _this;
121
+ _this = _call_super(this, VerticalBranchParseTree, [
122
+ lines
123
+ ]);
124
+ _this.verticalBranchPosition = verticalBranchPosition;
125
+ return _this;
126
+ }
127
+ _create_class(VerticalBranchParseTree, [
128
+ {
129
+ key: "getVerticalBranchPosition",
130
+ value: function getVerticalBranchPosition() {
131
+ return this.verticalBranchPosition;
132
+ }
133
+ },
134
+ {
135
+ key: "addLeftMargin",
136
+ value: function addLeftMargin(leftMarginWidth) {
137
+ _get(_get_prototype_of(VerticalBranchParseTree.prototype), "addLeftMargin", this).call(this, leftMarginWidth);
138
+ this.verticalBranchPosition += leftMarginWidth; ///
139
+ }
140
+ }
141
+ ], [
142
+ {
143
+ key: "fromWidth",
144
+ value: function fromWidth(width) {
145
+ var string = BAR_CHARACTER, verticalBranchPosition = 0, verticalBranchParseTree = VerticalBranchParseTree.fromStringAndVerticalBranchPosition(VerticalBranchParseTree, string, verticalBranchPosition), leftMarginWidth = Math.floor(width / 2), rightMarginWidth = width - leftMarginWidth - 1;
146
+ verticalBranchParseTree.addLeftMargin(leftMarginWidth);
147
+ verticalBranchParseTree.addRightMargin(rightMarginWidth);
148
+ return verticalBranchParseTree;
149
+ }
150
+ },
151
+ {
152
+ key: "fromDepthAndVerticalBranchPosition",
153
+ value: function fromDepthAndVerticalBranchPosition(Class, depth, verticalBranchPosition) {
154
+ var lines = linesFromDepth(depth), verticalBranchParseTree = new Class(lines, verticalBranchPosition);
155
+ return verticalBranchParseTree;
156
+ }
157
+ },
158
+ {
159
+ key: "fromStringAndVerticalBranchPosition",
160
+ value: function fromStringAndVerticalBranchPosition(Class, string, verticalBranchPosition) {
161
+ if (verticalBranchPosition === undefined) {
162
+ verticalBranchPosition = string; ///
163
+ string = Class; ///
164
+ Class = _parseTree.default; ///
165
+ }
166
+ var line = string, lines = [
167
+ line
168
+ ], verticalBranchParseTree = new Class(lines, verticalBranchPosition);
169
+ return verticalBranchParseTree;
170
+ }
171
+ }
172
+ ]);
173
+ return VerticalBranchParseTree;
174
+ }(_parseTree.default);
175
+ function linesFromDepth(depth) {
176
+ var lines = [];
177
+ var index = 0;
178
+ while(index < depth){
179
+ lines[index++] = _constants.EMPTY_STRING;
180
+ }
181
+ return lines;
182
+ }
183
+
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvdmVydGljYWxCcmFuY2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNoYXJhY3RlcnMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgQkFSX0NIQVJBQ1RFUiB9ID0gY2hhcmFjdGVycztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVydGljYWxCcmFuY2hQYXJzZVRyZWUgZXh0ZW5kcyBQYXJzZVRyZWUge1xuICBjb25zdHJ1Y3RvcihsaW5lcywgdmVydGljYWxCcmFuY2hQb3NpdGlvbikge1xuICAgIHN1cGVyKGxpbmVzKTtcbiAgICBcbiAgICB0aGlzLnZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uO1xuICB9XG4gIFxuICBnZXRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsQnJhbmNoUG9zaXRpb247XG4gIH1cblxuICBhZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCkge1xuICAgIHN1cGVyLmFkZExlZnRNYXJnaW4obGVmdE1hcmdpbldpZHRoKTtcblxuICAgIHRoaXMudmVydGljYWxCcmFuY2hQb3NpdGlvbiArPSBsZWZ0TWFyZ2luV2lkdGg7IC8vL1xuICB9XG5cbiAgc3RhdGljIGZyb21XaWR0aCh3aWR0aCkge1xuICAgIGNvbnN0IHN0cmluZyA9IEJBUl9DSEFSQUNURVIsXG4gICAgICAgICAgdmVydGljYWxCcmFuY2hQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgdmVydGljYWxCcmFuY2hQYXJzZVRyZWUgPSBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5mcm9tU3RyaW5nQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSwgc3RyaW5nLCB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKSxcbiAgICAgICAgICBsZWZ0TWFyZ2luV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoLzIpLFxuICAgICAgICAgIHJpZ2h0TWFyZ2luV2lkdGggPSB3aWR0aCAtIGxlZnRNYXJnaW5XaWR0aCAtIDE7XG5cbiAgICB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5hZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCk7XG4gICAgdmVydGljYWxCcmFuY2hQYXJzZVRyZWUuYWRkUmlnaHRNYXJnaW4ocmlnaHRNYXJnaW5XaWR0aCk7XG5cbiAgICByZXR1cm4gdmVydGljYWxCcmFuY2hQYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbURlcHRoQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihDbGFzcywgZGVwdGgsIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24pIHtcbiAgICBjb25zdCBsaW5lcyA9IGxpbmVzRnJvbURlcHRoKGRlcHRoKSxcbiAgICAgICAgICB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSA9IG5ldyBDbGFzcyhsaW5lcywgdmVydGljYWxCcmFuY2hQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gdmVydGljYWxCcmFuY2hQYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0cmluZ0FuZFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oQ2xhc3MsIHN0cmluZywgdmVydGljYWxCcmFuY2hQb3NpdGlvbikge1xuICAgIGlmICh2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBzdHJpbmc7ICAvLy9cblxuICAgICAgc3RyaW5nID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFBhcnNlVHJlZTsgIC8vL1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBsaW5lID0gc3RyaW5nLCAvLy9cbiAgICAgICAgICBsaW5lcyA9IFtcbiAgICAgICAgICAgIGxpbmVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlID0gbmV3IENsYXNzKGxpbmVzLCB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKTtcblxuICAgIHJldHVybiB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsaW5lc0Zyb21EZXB0aChkZXB0aCkge1xuICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGluZGV4IDwgZGVwdGgpIHtcbiAgICBsaW5lc1tpbmRleCsrXSA9IEVNUFRZX1NUUklORztcbiAgfVxuXG4gIHJldHVybiBsaW5lcztcbn1cbiJdLCJuYW1lcyI6WyJWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSIsIkJBUl9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwibGluZXMiLCJ2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiZ2V0VmVydGljYWxCcmFuY2hQb3NpdGlvbiIsImFkZExlZnRNYXJnaW4iLCJsZWZ0TWFyZ2luV2lkdGgiLCJmcm9tV2lkdGgiLCJ3aWR0aCIsInN0cmluZyIsInZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlIiwiZnJvbVN0cmluZ0FuZFZlcnRpY2FsQnJhbmNoUG9zaXRpb24iLCJNYXRoIiwiZmxvb3IiLCJyaWdodE1hcmdpbldpZHRoIiwiYWRkUmlnaHRNYXJnaW4iLCJmcm9tRGVwdGhBbmRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiQ2xhc3MiLCJkZXB0aCIsImxpbmVzRnJvbURlcHRoIiwidW5kZWZpbmVkIiwiUGFyc2VUcmVlIiwibGluZSIsImluZGV4IiwiRU1QVFlfU1RSSU5HIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVVxQkE7Ozt5QkFSTTtnRUFFTDt5QkFFTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQU0sQUFBRUMsZ0JBQWtCQyxxQkFBVSxDQUE1QkQ7QUFFTyxJQUFBLEFBQU1ELHdDQUFOO2NBQU1BO2FBQUFBLHdCQUNQRyxLQUFLLEVBQUVDLHNCQUFzQjtnQ0FEdEJKOztnQkFFakIsa0JBRmlCQTtZQUVYRzs7UUFFTixNQUFLQyxzQkFBc0IsR0FBR0E7OztrQkFKYko7O1lBT25CSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNELHNCQUFzQjtZQUNwQzs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjQyxlQUFlO2dCQUMzQix1QkFaaUJQLG9DQVlYTSxpQkFBTixJQUFLLGFBQWVDO2dCQUVwQixJQUFJLENBQUNILHNCQUFzQixJQUFJRyxpQkFBaUIsR0FBRztZQUNyRDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxVQUFVQyxLQUFLO2dCQUNwQixJQUFNQyxTQUFTVCxlQUNURyx5QkFBeUIsR0FDekJPLDBCQUEwQlgsQUFwQmZBLHdCQW9CdUNZLG1DQUFtQyxDQXBCMUVaLHlCQW9Cb0dVLFFBQVFOLHlCQUN2SEcsa0JBQWtCTSxLQUFLQyxLQUFLLENBQUNMLFFBQU0sSUFDbkNNLG1CQUFtQk4sUUFBUUYsa0JBQWtCO2dCQUVuREksd0JBQXdCTCxhQUFhLENBQUNDO2dCQUN0Q0ksd0JBQXdCSyxjQUFjLENBQUNEO2dCQUV2QyxPQUFPSjtZQUNUOzs7WUFFT00sS0FBQUE7bUJBQVAsU0FBT0EsbUNBQW1DQyxLQUFLLEVBQUVDLEtBQUssRUFBRWYsc0JBQXNCO2dCQUM1RSxJQUFNRCxRQUFRaUIsZUFBZUQsUUFDdkJSLDBCQUEwQixJQUFJTyxNQUFNZixPQUFPQztnQkFFakQsT0FBT087WUFDVDs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLG9DQUFvQ00sS0FBSyxFQUFFUixNQUFNLEVBQUVOLHNCQUFzQjtnQkFDOUUsSUFBSUEsMkJBQTJCaUIsV0FBVztvQkFDeENqQix5QkFBeUJNLFFBQVMsR0FBRztvQkFFckNBLFNBQVNRLE9BQU8sR0FBRztvQkFFbkJBLFFBQVFJLGtCQUFTLEVBQUcsR0FBRztnQkFDekI7Z0JBRUEsSUFBTUMsT0FBT2IsUUFDUFAsUUFBUTtvQkFDTm9CO2lCQUNELEVBQ0RaLDBCQUEwQixJQUFJTyxNQUFNZixPQUFPQztnQkFFakQsT0FBT087WUFDVDs7O1dBckRtQlg7RUFBZ0NzQixrQkFBUztBQXdEOUQsU0FBU0YsZUFBZUQsS0FBSztJQUMzQixJQUFNaEIsUUFBUSxFQUFFO0lBRWhCLElBQUlxQixRQUFRO0lBRVosTUFBT0EsUUFBUUwsTUFBTztRQUNwQmhCLEtBQUssQ0FBQ3FCLFFBQVEsR0FBR0MsdUJBQVk7SUFDL0I7SUFFQSxPQUFPdEI7QUFDVCJ9
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ParseTree;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ var _constants = require("./constants");
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _defineProperties(target, props) {
19
+ for(var i = 0; i < props.length; i++){
20
+ var descriptor = props[i];
21
+ descriptor.enumerable = descriptor.enumerable || false;
22
+ descriptor.configurable = true;
23
+ if ("value" in descriptor) descriptor.writable = true;
24
+ Object.defineProperty(target, descriptor.key, descriptor);
25
+ }
26
+ }
27
+ function _create_class(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ return Constructor;
31
+ }
32
+ var last = _necessary.arrayUtilities.last, NEW_LINE_CHARACTER = _necessary.characters.NEW_LINE_CHARACTER, SPACE_CHARACTER = _necessary.characters.SPACE_CHARACTER;
33
+ var ParseTree = /*#__PURE__*/ function() {
34
+ function ParseTree(lines) {
35
+ _class_call_check(this, ParseTree);
36
+ this.lines = lines;
37
+ }
38
+ _create_class(ParseTree, [
39
+ {
40
+ key: "clone",
41
+ value: function clone() {
42
+ var lines = this.lines.slice(), parseTree = new ParseTree(lines);
43
+ return parseTree;
44
+ }
45
+ },
46
+ {
47
+ key: "getWidth",
48
+ value: function getWidth() {
49
+ var width;
50
+ var linesLength = this.lines.length;
51
+ if (linesLength === 0) {
52
+ width = 0;
53
+ } else {
54
+ var lastLine = last(this.lines), lastLineLength = lastLine.length;
55
+ width = lastLineLength; ///
56
+ }
57
+ return width;
58
+ }
59
+ },
60
+ {
61
+ key: "getDepth",
62
+ value: function getDepth() {
63
+ var linesLength = this.lines.length, depth = linesLength; ///
64
+ return depth;
65
+ }
66
+ },
67
+ {
68
+ key: "forEachLine",
69
+ value: function forEachLine(callback) {
70
+ this.lines.forEach(callback);
71
+ }
72
+ },
73
+ {
74
+ key: "appendToTop",
75
+ value: function appendToTop(parseTree) {
76
+ var _this = this;
77
+ parseTree.forEachLine(function(line) {
78
+ _this.lines.unshift(line);
79
+ });
80
+ }
81
+ },
82
+ {
83
+ key: "appendToLeft",
84
+ value: function appendToLeft(parseTree) {
85
+ var _this = this;
86
+ parseTree.forEachLine(function(line, index) {
87
+ _this.lines[index] = line + _this.lines[index];
88
+ });
89
+ }
90
+ },
91
+ {
92
+ key: "appendToRight",
93
+ value: function appendToRight(parseTree) {
94
+ var _this = this;
95
+ parseTree.forEachLine(function(line, index) {
96
+ _this.lines[index] = _this.lines[index] + line;
97
+ });
98
+ }
99
+ },
100
+ {
101
+ key: "appendToBottom",
102
+ value: function appendToBottom(parseTree) {
103
+ var _this = this;
104
+ parseTree.forEachLine(function(line) {
105
+ _this.lines.push(line);
106
+ });
107
+ }
108
+ },
109
+ {
110
+ key: "addTopMargin",
111
+ value: function addTopMargin(topMarginDepth) {
112
+ var width = this.getWidth(), topMarginWidth = width, topMarginString = marginStringFromMarginWidth(topMarginWidth);
113
+ for(var index = 0; index < topMarginDepth; index++){
114
+ this.lines.unshift(topMarginString);
115
+ }
116
+ }
117
+ },
118
+ {
119
+ key: "addLeftMargin",
120
+ value: function addLeftMargin(leftMarginWidth) {
121
+ var leftMarginString = marginStringFromMarginWidth(leftMarginWidth), linesLength = this.lines.length;
122
+ for(var index = 0; index < linesLength; index++){
123
+ this.lines[index] = leftMarginString + this.lines[index];
124
+ }
125
+ }
126
+ },
127
+ {
128
+ key: "addRightMargin",
129
+ value: function addRightMargin(rightMarginWidth) {
130
+ var rightMarginString = marginStringFromMarginWidth(rightMarginWidth), linesLength = this.lines.length;
131
+ for(var index = 0; index < linesLength; index++){
132
+ this.lines[index] = this.lines[index] + rightMarginString;
133
+ }
134
+ }
135
+ },
136
+ {
137
+ key: "addBottomMargin",
138
+ value: function addBottomMargin(bottomMarginDepth) {
139
+ var width = this.getWidth(), bottomMarginWidth = width, bottomMarginString = marginStringFromMarginWidth(bottomMarginWidth);
140
+ for(var index = 0; index < bottomMarginDepth; index++){
141
+ this.lines.push(bottomMarginString);
142
+ }
143
+ }
144
+ },
145
+ {
146
+ key: "popLine",
147
+ value: function popLine() {
148
+ return this.lines.pop();
149
+ }
150
+ },
151
+ {
152
+ key: "shiftLine",
153
+ value: function shiftLine() {
154
+ return this.lines.shift();
155
+ }
156
+ },
157
+ {
158
+ key: "pushLine",
159
+ value: function pushLine(line) {
160
+ this.lines.push(line);
161
+ }
162
+ },
163
+ {
164
+ key: "unshiftLine",
165
+ value: function unshiftLine(line) {
166
+ this.lines.unshift(line);
167
+ }
168
+ },
169
+ {
170
+ key: "asString",
171
+ value: function asString() {
172
+ var string = this.lines.reduce(function(string, line) {
173
+ string += line + NEW_LINE_CHARACTER;
174
+ return string;
175
+ }, _constants.EMPTY_STRING);
176
+ return string;
177
+ }
178
+ }
179
+ ]);
180
+ return ParseTree;
181
+ }();
182
+ function marginStringFromMarginWidth(marginWidth, spaceCharacter) {
183
+ spaceCharacter = spaceCharacter || SPACE_CHARACTER;
184
+ var marginString = _constants.EMPTY_STRING;
185
+ for(var index = 0; index < marginWidth; index++){
186
+ marginString += spaceCharacter;
187
+ }
188
+ return marginString;
189
+ }
190
+
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZVRyZWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNoYXJhY3RlcnMsIGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgTkVXX0xJTkVfQ0hBUkFDVEVSLCBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlVHJlZSB7XG4gIGNvbnN0cnVjdG9yKGxpbmVzKSB7XG4gICAgdGhpcy5saW5lcyA9IGxpbmVzO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgbGluZXMgPSB0aGlzLmxpbmVzLnNsaWNlKCksICAvLy9cbiAgICAgICAgICBwYXJzZVRyZWUgPSBuZXcgUGFyc2VUcmVlKGxpbmVzKTtcblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBnZXRXaWR0aCgpIHtcbiAgICBsZXQgd2lkdGg7XG5cbiAgICBsZXQgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aDtcblxuICAgIGlmIChsaW5lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgd2lkdGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0TGluZSA9IGxhc3QodGhpcy5saW5lcyksXG4gICAgICAgICAgICBsYXN0TGluZUxlbmd0aCA9IGxhc3RMaW5lLmxlbmd0aDtcblxuICAgICAgd2lkdGggPSBsYXN0TGluZUxlbmd0aDsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHdpZHRoO1xuICB9XG5cbiAgZ2V0RGVwdGgoKSB7XG4gICAgY29uc3QgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aCxcbiAgICAgICAgICBkZXB0aCA9IGxpbmVzTGVuZ3RoOyAgLy8vXG5cbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cblxuICBmb3JFYWNoTGluZShjYWxsYmFjaykge1xuICAgIHRoaXMubGluZXMuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBhcHBlbmRUb1RvcChwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUpID0+IHtcbiAgICAgIHRoaXMubGluZXMudW5zaGlmdChsaW5lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvTGVmdChwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLmxpbmVzW2luZGV4XSA9IGxpbmUgKyB0aGlzLmxpbmVzW2luZGV4XTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvUmlnaHQocGFyc2VUcmVlKSB7XG4gICAgcGFyc2VUcmVlLmZvckVhY2hMaW5lKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5saW5lc1tpbmRleF0gPSB0aGlzLmxpbmVzW2luZGV4XSArIGxpbmU7XG4gICAgfSk7XG4gIH1cblxuICBhcHBlbmRUb0JvdHRvbShwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUpID0+IHtcbiAgICAgIHRoaXMubGluZXMucHVzaChsaW5lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRvcE1hcmdpbih0b3BNYXJnaW5EZXB0aCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpLFxuICAgICAgICAgIHRvcE1hcmdpbldpZHRoID0gd2lkdGgsICAvLy9cbiAgICAgICAgICB0b3BNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgodG9wTWFyZ2luV2lkdGgpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRvcE1hcmdpbkRlcHRoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzLnVuc2hpZnQodG9wTWFyZ2luU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBhZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCkge1xuICAgIGNvbnN0IGxlZnRNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobGVmdE1hcmdpbldpZHRoKSxcbiAgICAgICAgICBsaW5lc0xlbmd0aCA9IHRoaXMubGluZXMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpbmVzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzW2luZGV4XSA9IGxlZnRNYXJnaW5TdHJpbmcgKyB0aGlzLmxpbmVzW2luZGV4XTtcbiAgICB9XG4gIH1cblxuICBhZGRSaWdodE1hcmdpbihyaWdodE1hcmdpbldpZHRoKSB7XG4gICAgY29uc3QgcmlnaHRNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgocmlnaHRNYXJnaW5XaWR0aCksXG4gICAgICAgICAgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lc0xlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdGhpcy5saW5lc1tpbmRleF0gPSB0aGlzLmxpbmVzW2luZGV4XSArIHJpZ2h0TWFyZ2luU3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIGFkZEJvdHRvbU1hcmdpbihib3R0b21NYXJnaW5EZXB0aCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpLFxuICAgICAgICAgIGJvdHRvbU1hcmdpbldpZHRoID0gd2lkdGgsICAvLy9cbiAgICAgICAgICBib3R0b21NYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgoYm90dG9tTWFyZ2luV2lkdGgpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJvdHRvbU1hcmdpbkRlcHRoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzLnB1c2goYm90dG9tTWFyZ2luU3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgXG4gIHBvcExpbmUoKSB7IHJldHVybiB0aGlzLmxpbmVzLnBvcCgpOyB9XG4gIFxuICBzaGlmdExpbmUoKSB7IHJldHVybiB0aGlzLmxpbmVzLnNoaWZ0KCk7IH1cbiAgXG4gIHB1c2hMaW5lKGxpbmUpIHsgdGhpcy5saW5lcy5wdXNoKGxpbmUpOyB9XG4gIFxuICB1bnNoaWZ0TGluZShsaW5lKSB7IHRoaXMubGluZXMudW5zaGlmdChsaW5lKTsgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMubGluZXMucmVkdWNlKChzdHJpbmcsIGxpbmUpID0+IHtcbiAgICAgIHN0cmluZyArPSBsaW5lICsgTkVXX0xJTkVfQ0hBUkFDVEVSO1xuXG4gICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmdpblN0cmluZ0Zyb21NYXJnaW5XaWR0aChtYXJnaW5XaWR0aCwgc3BhY2VDaGFyYWN0ZXIpIHtcbiAgc3BhY2VDaGFyYWN0ZXIgPSBzcGFjZUNoYXJhY3RlciB8fCBTUEFDRV9DSEFSQUNURVI7XG5cbiAgbGV0IG1hcmdpblN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFyZ2luV2lkdGg7IGluZGV4KyspIHtcbiAgICBtYXJnaW5TdHJpbmcgKz0gc3BhY2VDaGFyYWN0ZXI7XG4gIH1cblxuICByZXR1cm4gbWFyZ2luU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIlBhcnNlVHJlZSIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsIk5FV19MSU5FX0NIQVJBQ1RFUiIsImNoYXJhY3RlcnMiLCJTUEFDRV9DSEFSQUNURVIiLCJsaW5lcyIsImNsb25lIiwic2xpY2UiLCJwYXJzZVRyZWUiLCJnZXRXaWR0aCIsIndpZHRoIiwibGluZXNMZW5ndGgiLCJsZW5ndGgiLCJsYXN0TGluZSIsImxhc3RMaW5lTGVuZ3RoIiwiZ2V0RGVwdGgiLCJkZXB0aCIsImZvckVhY2hMaW5lIiwiY2FsbGJhY2siLCJmb3JFYWNoIiwiYXBwZW5kVG9Ub3AiLCJsaW5lIiwidW5zaGlmdCIsImFwcGVuZFRvTGVmdCIsImluZGV4IiwiYXBwZW5kVG9SaWdodCIsImFwcGVuZFRvQm90dG9tIiwicHVzaCIsImFkZFRvcE1hcmdpbiIsInRvcE1hcmdpbkRlcHRoIiwidG9wTWFyZ2luV2lkdGgiLCJ0b3BNYXJnaW5TdHJpbmciLCJtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgiLCJhZGRMZWZ0TWFyZ2luIiwibGVmdE1hcmdpbldpZHRoIiwibGVmdE1hcmdpblN0cmluZyIsImFkZFJpZ2h0TWFyZ2luIiwicmlnaHRNYXJnaW5XaWR0aCIsInJpZ2h0TWFyZ2luU3RyaW5nIiwiYWRkQm90dG9tTWFyZ2luIiwiYm90dG9tTWFyZ2luRGVwdGgiLCJib3R0b21NYXJnaW5XaWR0aCIsImJvdHRvbU1hcmdpblN0cmluZyIsInBvcExpbmUiLCJwb3AiLCJzaGlmdExpbmUiLCJzaGlmdCIsInB1c2hMaW5lIiwidW5zaGlmdExpbmUiLCJhc1N0cmluZyIsInN0cmluZyIsInJlZHVjZSIsIkVNUFRZX1NUUklORyIsIm1hcmdpbldpZHRoIiwic3BhY2VDaGFyYWN0ZXIiLCJtYXJnaW5TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBU3FCQTs7O3lCQVBzQjt5QkFFZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFN0IsSUFBTSxBQUFFQyxPQUFTQyx5QkFBYyxDQUF2QkQsTUFDQUUscUJBQXdDQyxxQkFBVSxDQUFsREQsb0JBQW9CRSxrQkFBb0JELHFCQUFVLENBQTlCQztBQUViLElBQUEsQUFBTUwsMEJBQU47YUFBTUEsVUFDUE0sS0FBSztnQ0FERU47UUFFakIsSUFBSSxDQUFDTSxLQUFLLEdBQUdBOztrQkFGSU47O1lBS25CTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0Us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