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.
- package/example.js +1495 -1305
- package/lib/example/constants.js +22 -0
- package/lib/example/utilities/query.js +23 -0
- package/lib/example/view/div/sizeable.js +2 -2
- package/lib/example/view/textarea/expressions.js +143 -0
- package/lib/example/view/textarea/outerNodes.js +147 -0
- package/lib/example/view/{input/expressionString.js → textarea/parseTree/inner.js} +43 -28
- package/lib/{expression/parser.js → example/view/textarea/parseTree/outer.js} +20 -28
- package/lib/example/view/textarea/parseTree.js +1 -19
- package/lib/example/view.js +26 -20
- package/lib/index.js +7 -19
- package/lib/node.js +302 -0
- package/lib/parseTree/childNodes.js +164 -0
- package/lib/parseTree/horizontalBranch.js +120 -0
- package/lib/parseTree/node.js +145 -0
- package/lib/parseTree/string.js +109 -0
- package/lib/parseTree/verticalBranch.js +184 -0
- package/lib/parseTree.js +191 -0
- package/lib/utilities/node.js +56 -309
- package/package.json +3 -2
- package/src/example/constants.js +4 -0
- package/src/example/utilities/query.js +21 -0
- package/src/example/view/div/sizeable.js +1 -1
- package/src/example/view/textarea/expressions.js +39 -0
- package/src/example/view/textarea/outerNodes.js +48 -0
- package/src/example/view/textarea/parseTree/inner.js +24 -0
- package/src/example/view/textarea/parseTree/outer.js +17 -0
- package/src/example/view/textarea/parseTree.js +0 -18
- package/src/example/view.js +44 -32
- package/src/index.js +2 -5
- package/src/node.js +221 -0
- package/src/parseTree/childNodes.js +108 -0
- package/src/parseTree/horizontalBranch.js +32 -0
- package/src/parseTree/node.js +77 -0
- package/src/parseTree/string.js +18 -0
- package/src/parseTree/verticalBranch.js +77 -0
- package/src/parseTree.js +141 -0
- package/src/utilities/node.js +66 -416
- package/lib/example/view/textarea/nodes.js +0 -155
- package/lib/expression/bnf.js +0 -14
- package/lib/expression/entries.js +0 -27
- package/lib/expression/lexer.js +0 -145
- package/lib/expression.js +0 -113
- package/lib/path.js +0 -69
- package/lib/query.js +0 -216
- package/lib/ruleNames.js +0 -54
- package/lib/spread.js +0 -113
- package/lib/subExpression.js +0 -101
- package/lib/utilities/array.js +0 -67
- package/lib/utilities/query.js +0 -39
- package/src/example/view/input/expressionString.js +0 -33
- package/src/example/view/textarea/nodes.js +0 -55
- package/src/expression/bnf.js +0 -63
- package/src/expression/entries.js +0 -18
- package/src/expression/lexer.js +0 -35
- package/src/expression/parser.js +0 -15
- package/src/expression.js +0 -82
- package/src/path.js +0 -32
- package/src/query.js +0 -207
- package/src/ruleNames.js +0 -12
- package/src/spread.js +0 -104
- package/src/subExpression.js +0 -52
- package/src/utilities/array.js +0 -30
- 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
|
package/lib/parseTree.js
ADDED
|
@@ -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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
|