occam-dom 5.3.85 → 5.3.86
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/lib/constants.js +13 -0
- package/lib/example/constants.js +13 -0
- package/lib/example/utilities/query.js +23 -0
- package/lib/example/utilities/token.js +28 -0
- package/lib/example/view/div/sizeable.js +25 -0
- package/lib/example/view/input.js +27 -0
- package/lib/example/view/subHeading.js +29 -0
- package/lib/example/view/textarea/content.js +39 -0
- package/lib/example/view/textarea/expressions.js +45 -0
- package/lib/example/view/textarea/parseTree/inner.js +34 -0
- package/lib/example/view/textarea/parseTree/outer.js +29 -0
- package/lib/example/view/textarea/parseTree.js +36 -0
- package/lib/example/view/textarea.js +31 -0
- package/lib/example/view.js +80 -0
- package/lib/example.js +19 -0
- package/lib/index.js +35 -0
- package/lib/node.js +130 -0
- package/lib/parseTree/childNodes.js +80 -0
- package/lib/parseTree/horizontalBranch.js +36 -0
- package/lib/parseTree/node.js +61 -0
- package/lib/parseTree/string.js +25 -0
- package/lib/parseTree/verticalBranch.js +63 -0
- package/lib/parseTree.js +113 -0
- package/lib/transform.js +90 -0
- package/lib/utilities/node.js +134 -0
- package/lib/utilities/transform.js +181 -0
- package/package.json +2 -2
package/lib/node.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
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 Node;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _occamparsers = require("occam-parsers");
|
|
12
|
+
const _node = /*#__PURE__*/ _interop_require_default(require("./parseTree/node"));
|
|
13
|
+
const _constants = require("./constants");
|
|
14
|
+
const _node1 = require("./utilities/node");
|
|
15
|
+
function _interop_require_default(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
class Node {
|
|
21
|
+
constructor(outerNode, parentNode, childNodes){
|
|
22
|
+
this.outerNode = outerNode;
|
|
23
|
+
this.parentNode = parentNode;
|
|
24
|
+
this.childNodes = childNodes;
|
|
25
|
+
}
|
|
26
|
+
getOuterNode() {
|
|
27
|
+
return this.outerNode;
|
|
28
|
+
}
|
|
29
|
+
getParentNode() {
|
|
30
|
+
return this.parentNode;
|
|
31
|
+
}
|
|
32
|
+
getChildNodes() {
|
|
33
|
+
return this.childNodes;
|
|
34
|
+
}
|
|
35
|
+
setOuterNode(outerNode) {
|
|
36
|
+
this.outerNode = outerNode;
|
|
37
|
+
}
|
|
38
|
+
setParentNode(parentNode) {
|
|
39
|
+
this.parentNode = parentNode;
|
|
40
|
+
}
|
|
41
|
+
setChildNodes(childNodes) {
|
|
42
|
+
const startIndex = 0, deleteCount = Infinity, addedChildNodes = childNodes; ///
|
|
43
|
+
this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
|
|
44
|
+
}
|
|
45
|
+
isLessThan(node) {
|
|
46
|
+
const nodeA = this, nodeB = node, lessThan = (0, _node1.isLessThan)(nodeA, nodeB);
|
|
47
|
+
return lessThan;
|
|
48
|
+
}
|
|
49
|
+
isGreaterThan(node) {
|
|
50
|
+
const nodeA = this, nodeB = node, greaterThan = (0, _node1.isGreaterThan)(nodeA, nodeB);
|
|
51
|
+
return greaterThan;
|
|
52
|
+
}
|
|
53
|
+
isLessThanOrEqualTo(node) {
|
|
54
|
+
const nodeA = this, nodeB = node, lessThanOrEqualTo = (0, _node1.isLessThanOrEqualTo)(nodeA, nodeB);
|
|
55
|
+
return lessThanOrEqualTo;
|
|
56
|
+
}
|
|
57
|
+
isGreaterThanOrEqualTo(node) {
|
|
58
|
+
const nodeA = this, nodeB = node, greaterThanOrEqualTo = (0, _node1.isGreaterThanOrEqualTo)(nodeA, nodeB);
|
|
59
|
+
return greaterThanOrEqualTo;
|
|
60
|
+
}
|
|
61
|
+
matchOuterNode(outerNode) {
|
|
62
|
+
const outerNodeMatches = this.outerNode === outerNode;
|
|
63
|
+
return outerNodeMatches;
|
|
64
|
+
}
|
|
65
|
+
destroy() {
|
|
66
|
+
this.forEachChildNode((childNode)=>{
|
|
67
|
+
childNode.destroy();
|
|
68
|
+
});
|
|
69
|
+
this.outerNode = null;
|
|
70
|
+
this.parentNode = null;
|
|
71
|
+
this.childNodes = null;
|
|
72
|
+
}
|
|
73
|
+
asString() {
|
|
74
|
+
let string = _constants.EMPTY_STRING;
|
|
75
|
+
if (this.outerNode !== null) {
|
|
76
|
+
const nodeTerminalNode = this.outerNode.isTerminalNode();
|
|
77
|
+
if (nodeTerminalNode) {
|
|
78
|
+
const terminalNode = this.outerNode, type = terminalNode.getType(), content = terminalNode.getContent();
|
|
79
|
+
string = `"${content}" [${type}]`;
|
|
80
|
+
} else {
|
|
81
|
+
const nonTerminalNode = this.outerNode, ruleName = nonTerminalNode.getRuleName();
|
|
82
|
+
string = ruleName; ///
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return string;
|
|
86
|
+
}
|
|
87
|
+
asParseTree() {
|
|
88
|
+
const node = this, nodeParseTree = _node.default.fromNode(node), parseTree = nodeParseTree; ///
|
|
89
|
+
return parseTree;
|
|
90
|
+
}
|
|
91
|
+
clone(...remainingArguments) {
|
|
92
|
+
const Class = this.constructor, outerNode = this.outerNode, parentNode = null, childNodes = cloneChildNodes(this.childNodes), node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
93
|
+
node.setChildNodesParentNode();
|
|
94
|
+
return node;
|
|
95
|
+
}
|
|
96
|
+
static fromNothing(Class, ...remainingArguments) {
|
|
97
|
+
if (Class === undefined) {
|
|
98
|
+
Class = Node; ///
|
|
99
|
+
}
|
|
100
|
+
const outerNode = null, parentNode = null, childNodes = [], node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
101
|
+
return node;
|
|
102
|
+
}
|
|
103
|
+
static fromOuterNode(Class, outerNode, ...remainingArguments) {
|
|
104
|
+
if (outerNode === undefined) {
|
|
105
|
+
outerNode = Class; ///
|
|
106
|
+
Class = Node; ///
|
|
107
|
+
}
|
|
108
|
+
const parentNode = null, childNodes = [], node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
109
|
+
return node;
|
|
110
|
+
}
|
|
111
|
+
static fromChildNodes(Class, childNodes, ...remainingArguments) {
|
|
112
|
+
if (childNodes === undefined) {
|
|
113
|
+
childNodes = Class; ///
|
|
114
|
+
Class = Node; ///
|
|
115
|
+
}
|
|
116
|
+
const outerNode = null, parentNode = null, node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
117
|
+
node.setChildNodesParentNode();
|
|
118
|
+
return node;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
Object.assign(Node.prototype, _occamparsers.nodeMixins);
|
|
122
|
+
function cloneChildNodes(childNodes) {
|
|
123
|
+
childNodes = childNodes.map((childNode)=>{
|
|
124
|
+
childNode = childNode.clone(); ///
|
|
125
|
+
return childNode;
|
|
126
|
+
});
|
|
127
|
+
return childNodes;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlTWl4aW5zIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcblxuaW1wb3J0IE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4vcGFyc2VUcmVlL25vZGVcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpc0xlc3NUaGFuLCBpc0dyZWF0ZXJUaGFuLCBpc0xlc3NUaGFuT3JFcXVhbFRvLCBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZSB7XG4gIGNvbnN0cnVjdG9yKG91dGVyTm9kZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcykge1xuICAgIHRoaXMub3V0ZXJOb2RlID0gb3V0ZXJOb2RlO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE91dGVyTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRlck5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gIH1cblxuICBzZXRPdXRlck5vZGUob3V0ZXJOb2RlKSB7XG4gICAgdGhpcy5vdXRlck5vZGUgPSBvdXRlck5vZGU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBpc0xlc3NUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW4gPSBpc0xlc3NUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW47XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgZ3JlYXRlclRoYW4gPSBpc0dyZWF0ZXJUaGFuKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gZ3JlYXRlclRoYW47XG4gIH1cblxuICBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIG5vZGVCID0gbm9kZSwgLy8vXG4gICAgICAgICAgbGVzc1RoYW5PckVxdWFsVG8gPSBpc0xlc3NUaGFuT3JFcXVhbFRvKG5vZGVBLCBub2RlQik7XG5cbiAgICByZXR1cm4gbGVzc1RoYW5PckVxdWFsVG87XG4gIH1cblxuICBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQSA9IHRoaXMsIC8vL1xuICAgICAgICBub2RlQiA9IG5vZGUsIC8vL1xuICAgICAgICBncmVhdGVyVGhhbk9yRXF1YWxUbyA9IGlzR3JlYXRlclRoYW5PckVxdWFsVG8obm9kZUEsIG5vZGVCKTtcblxuICAgIHJldHVybiBncmVhdGVyVGhhbk9yRXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSkge1xuICAgIGNvbnN0IG91dGVyTm9kZU1hdGNoZXMgPSAodGhpcy5vdXRlck5vZGUgPT09IG91dGVyTm9kZSk7XG5cbiAgICByZXR1cm4gb3V0ZXJOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm91dGVyTm9kZSA9IG51bGw7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICAgIGlmICh0aGlzLm91dGVyTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IHRoaXMub3V0ZXJOb2RlLFxuICAgICAgICAgICAgICB0eXBlID0gdGVybWluYWxOb2RlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgY29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICAgICAgc3RyaW5nID0gYFwiJHtjb250ZW50fVwiIFske3R5cGV9XWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLm91dGVyTm9kZSxcbiAgICAgICAgICAgICAgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgICBzdHJpbmcgPSBydWxlTmFtZTsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBhc1BhcnNlVHJlZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vZGVQYXJzZVRyZWUgPSBOb2RlUGFyc2VUcmVlLmZyb21Ob2RlKG5vZGUpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgb3V0ZXJOb2RlID0gdGhpcy5vdXRlck5vZGUsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IGNsb25lQ2hpbGROb2Rlcyh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoQ2xhc3MsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChDbGFzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU91dGVyTm9kZShDbGFzcywgb3V0ZXJOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAob3V0ZXJOb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dGVyTm9kZSA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROb2RlcyA9IFtdLFxuICAgICAgICAgIG5vZGUgPSBuZXcgQ2xhc3Mob3V0ZXJOb2RlLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkTm9kZXMoQ2xhc3MsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChjaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkTm9kZXMgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IG91dGVyTm9kZSA9IG51bGwsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9kZSA9IG5ldyBDbGFzcyhvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBub2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZnVuY3Rpb24gY2xvbmVDaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgY2hpbGROb2RlcyA9IGNoaWxkTm9kZXMubWFwKChjaGlsZE5vZGUpID0+IHsgIC8vL1xuICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5jbG9uZSgpOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGROb2RlO1xuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJnZXRPdXRlck5vZGUiLCJnZXRQYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsInNldE91dGVyTm9kZSIsInNldFBhcmVudE5vZGUiLCJzZXRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiSW5maW5pdHkiLCJhZGRlZENoaWxkTm9kZXMiLCJzcGxpY2VDaGlsZE5vZGVzIiwiaXNMZXNzVGhhbiIsIm5vZGUiLCJub2RlQSIsIm5vZGVCIiwibGVzc1RoYW4iLCJpc0dyZWF0ZXJUaGFuIiwiZ3JlYXRlclRoYW4iLCJpc0xlc3NUaGFuT3JFcXVhbFRvIiwibGVzc1RoYW5PckVxdWFsVG8iLCJpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiZ3JlYXRlclRoYW5PckVxdWFsVG8iLCJtYXRjaE91dGVyTm9kZSIsIm91dGVyTm9kZU1hdGNoZXMiLCJkZXN0cm95IiwiZm9yRWFjaENoaWxkTm9kZSIsImNoaWxkTm9kZSIsImFzU3RyaW5nIiwic3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidHlwZSIsImdldFR5cGUiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIm5vblRlcm1pbmFsTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJhc1BhcnNlVHJlZSIsIm5vZGVQYXJzZVRyZWUiLCJOb2RlUGFyc2VUcmVlIiwiZnJvbU5vZGUiLCJwYXJzZVRyZWUiLCJjbG9uZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsIkNsYXNzIiwiY2xvbmVDaGlsZE5vZGVzIiwic2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJmcm9tTm90aGluZyIsInVuZGVmaW5lZCIsImZyb21PdXRlck5vZGUiLCJmcm9tQ2hpbGROb2RlcyIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMi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
|
|
@@ -0,0 +1,80 @@
|
|
|
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 ChildNodesParseTree;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _necessary = require("necessary");
|
|
12
|
+
const _verticalBranch = /*#__PURE__*/ _interop_require_default(require("./verticalBranch"));
|
|
13
|
+
const _horizontalBranch = /*#__PURE__*/ _interop_require_default(require("./horizontalBranch"));
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const { first } = _necessary.arrayUtilities;
|
|
20
|
+
class ChildNodesParseTree extends _verticalBranch.default {
|
|
21
|
+
static fromChildNodes(childNodes) {
|
|
22
|
+
let childNodesParseTree = null;
|
|
23
|
+
const childNodesLength = childNodes.length;
|
|
24
|
+
if (childNodesLength > 0) {
|
|
25
|
+
const childNodeParseTrees = childNodes.reduce((childNodeParseTrees, childNode)=>{
|
|
26
|
+
const childNodeParseTree = childNode.asParseTree();
|
|
27
|
+
childNodeParseTrees.push(childNodeParseTree);
|
|
28
|
+
return childNodeParseTrees;
|
|
29
|
+
}, []), childNodeParseTreesLength = childNodeParseTrees.length;
|
|
30
|
+
if (childNodeParseTreesLength === 1) {
|
|
31
|
+
const firstChildNodeParseTree = first(childNodeParseTrees);
|
|
32
|
+
childNodesParseTree = firstChildNodeParseTree; ///
|
|
33
|
+
} else {
|
|
34
|
+
let firstVerticalBranchPosition, lastVerticalBranchPosition = 0, childNodeParseTreesWidth = 0, childNodeParseTreesDepth = 0;
|
|
35
|
+
childNodeParseTrees.forEach((childNodeParseTree, index)=>{
|
|
36
|
+
const childNodeParseTreeWidth = childNodeParseTree.getWidth(), childNodeParseTreeDepth = childNodeParseTree.getDepth();
|
|
37
|
+
if (index === 0) {
|
|
38
|
+
const firstChildNodeParseTree = childNodeParseTree, firstChildNodeParseTreeVerticalBranchPosition = firstChildNodeParseTree.getVerticalBranchPosition();
|
|
39
|
+
firstVerticalBranchPosition = firstChildNodeParseTreeVerticalBranchPosition;
|
|
40
|
+
}
|
|
41
|
+
if (index === childNodeParseTreesLength - 1) {
|
|
42
|
+
const lastChildNodeParseTree = childNodeParseTree, lastChildNodeParseTreeVerticalBranchPosition = lastChildNodeParseTree.getVerticalBranchPosition();
|
|
43
|
+
lastVerticalBranchPosition += lastChildNodeParseTreeVerticalBranchPosition;
|
|
44
|
+
}
|
|
45
|
+
if (index < childNodeParseTreesLength - 1) {
|
|
46
|
+
lastVerticalBranchPosition += childNodeParseTreeWidth;
|
|
47
|
+
lastVerticalBranchPosition += 1;
|
|
48
|
+
childNodeParseTreesWidth += 1;
|
|
49
|
+
}
|
|
50
|
+
childNodeParseTreesWidth += childNodeParseTreeWidth;
|
|
51
|
+
childNodeParseTreesDepth = Math.max(childNodeParseTreesDepth, childNodeParseTreeDepth);
|
|
52
|
+
});
|
|
53
|
+
const width = lastVerticalBranchPosition - firstVerticalBranchPosition + 1, verticalBranchParseTree = _verticalBranch.default.fromWidth(width), horizontalBranchParseTree = _horizontalBranch.default.fromWidth(width), leftMarginWidth = firstVerticalBranchPosition, rightMarginWidth = childNodeParseTreesWidth - width - leftMarginWidth;
|
|
54
|
+
verticalBranchParseTree.addLeftMargin(leftMarginWidth);
|
|
55
|
+
verticalBranchParseTree.addRightMargin(rightMarginWidth);
|
|
56
|
+
horizontalBranchParseTree.addLeftMargin(leftMarginWidth);
|
|
57
|
+
horizontalBranchParseTree.addRightMargin(rightMarginWidth);
|
|
58
|
+
const verticalBranchPosition = verticalBranchParseTree.getVerticalBranchPosition(), depth = childNodeParseTreesDepth; ///
|
|
59
|
+
childNodesParseTree = _verticalBranch.default.fromDepthAndVerticalBranchPosition(ChildNodesParseTree, depth, verticalBranchPosition);
|
|
60
|
+
childNodeParseTrees.forEach((childNodeParseTree, index)=>{
|
|
61
|
+
const childNodeParseTreeDepth = childNodeParseTree.getDepth(), clonedChildNodeParseTree = childNodeParseTree.clone();
|
|
62
|
+
if (index < childNodeParseTreesLength - 1) {
|
|
63
|
+
const rightMarginWidth = 1;
|
|
64
|
+
clonedChildNodeParseTree.addRightMargin(rightMarginWidth);
|
|
65
|
+
}
|
|
66
|
+
if (childNodeParseTreeDepth < childNodeParseTreesDepth) {
|
|
67
|
+
const bottomMarginDepth = childNodeParseTreesDepth - childNodeParseTreeDepth;
|
|
68
|
+
clonedChildNodeParseTree.addBottomMargin(bottomMarginDepth);
|
|
69
|
+
}
|
|
70
|
+
childNodesParseTree.appendToRight(clonedChildNodeParseTree);
|
|
71
|
+
});
|
|
72
|
+
childNodesParseTree.appendToTop(horizontalBranchParseTree);
|
|
73
|
+
childNodesParseTree.appendToTop(verticalBranchParseTree);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return childNodesParseTree;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvY2hpbGROb2Rlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSBmcm9tIFwiLi92ZXJ0aWNhbEJyYW5jaFwiO1xuaW1wb3J0IEhvcml6b250YWxCcmFuY2hQYXJzZVRyZWUgZnJvbSBcIi4vaG9yaXpvbnRhbEJyYW5jaFwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hpbGROb2Rlc1BhcnNlVHJlZSBleHRlbmRzIFZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlIHtcbiAgc3RhdGljIGZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1BhcnNlVHJlZSA9IG51bGw7XG5cbiAgICBjb25zdCBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZVBhcnNlVHJlZXMgPSBjaGlsZE5vZGVzLnJlZHVjZSgoY2hpbGROb2RlUGFyc2VUcmVlcywgY2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZVBhcnNlVHJlZSA9IGNoaWxkTm9kZS5hc1BhcnNlVHJlZSgpO1xuXG4gICAgICAgICAgICAgIGNoaWxkTm9kZVBhcnNlVHJlZXMucHVzaChjaGlsZE5vZGVQYXJzZVRyZWUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGVQYXJzZVRyZWVzO1xuICAgICAgICAgICAgfSwgW10pLFxuICAgICAgICAgICAgY2hpbGROb2RlUGFyc2VUcmVlc0xlbmd0aCA9IGNoaWxkTm9kZVBhcnNlVHJlZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoY2hpbGROb2RlUGFyc2VUcmVlc0xlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBmaXJzdENoaWxkTm9kZVBhcnNlVHJlZSA9IGZpcnN0KGNoaWxkTm9kZVBhcnNlVHJlZXMpO1xuXG4gICAgICAgIGNoaWxkTm9kZXNQYXJzZVRyZWUgPSBmaXJzdENoaWxkTm9kZVBhcnNlVHJlZTsgIC8vL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGZpcnN0VmVydGljYWxCcmFuY2hQb3NpdGlvbixcbiAgICAgICAgICAgIGxhc3RWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID0gMCxcbiAgICAgICAgICAgIGNoaWxkTm9kZVBhcnNlVHJlZXNXaWR0aCA9IDAsXG4gICAgICAgICAgICBjaGlsZE5vZGVQYXJzZVRyZWVzRGVwdGggPSAwO1xuXG4gICAgICAgIGNoaWxkTm9kZVBhcnNlVHJlZXMuZm9yRWFjaCgoY2hpbGROb2RlUGFyc2VUcmVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZVBhcnNlVHJlZVdpZHRoID0gY2hpbGROb2RlUGFyc2VUcmVlLmdldFdpZHRoKCksXG4gICAgICAgICAgICAgICAgY2hpbGROb2RlUGFyc2VUcmVlRGVwdGggPSBjaGlsZE5vZGVQYXJzZVRyZWUuZ2V0RGVwdGgoKTtcblxuICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RDaGlsZE5vZGVQYXJzZVRyZWUgPSBjaGlsZE5vZGVQYXJzZVRyZWUsXG4gICAgICAgICAgICAgICAgICBmaXJzdENoaWxkTm9kZVBhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBmaXJzdENoaWxkTm9kZVBhcnNlVHJlZS5nZXRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGZpcnN0VmVydGljYWxCcmFuY2hQb3NpdGlvbiA9IGZpcnN0Q2hpbGROb2RlUGFyc2VUcmVlVmVydGljYWxCcmFuY2hQb3NpdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW5kZXggPT09IGNoaWxkTm9kZVBhcnNlVHJlZXNMZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGROb2RlUGFyc2VUcmVlID0gY2hpbGROb2RlUGFyc2VUcmVlLFxuICAgICAgICAgICAgICAgICAgbGFzdENoaWxkTm9kZVBhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBsYXN0Q2hpbGROb2RlUGFyc2VUcmVlLmdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oKTtcblxuICAgICAgICAgICAgbGFzdFZlcnRpY2FsQnJhbmNoUG9zaXRpb24gKz0gbGFzdENoaWxkTm9kZVBhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb247XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGluZGV4IDwgY2hpbGROb2RlUGFyc2VUcmVlc0xlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGxhc3RWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uICs9IGNoaWxkTm9kZVBhcnNlVHJlZVdpZHRoO1xuICAgICAgICAgICAgbGFzdFZlcnRpY2FsQnJhbmNoUG9zaXRpb24gKz0gMTtcblxuICAgICAgICAgICAgY2hpbGROb2RlUGFyc2VUcmVlc1dpZHRoICs9IDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2hpbGROb2RlUGFyc2VUcmVlc1dpZHRoICs9IGNoaWxkTm9kZVBhcnNlVHJlZVdpZHRoO1xuICAgICAgICAgIGNoaWxkTm9kZVBhcnNlVHJlZXNEZXB0aCA9IE1hdGgubWF4KGNoaWxkTm9kZVBhcnNlVHJlZXNEZXB0aCwgY2hpbGROb2RlUGFyc2VUcmVlRGVwdGgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB3aWR0aCA9IGxhc3RWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIC0gZmlyc3RWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uICsgMSxcbiAgICAgICAgICAgICAgdmVydGljYWxCcmFuY2hQYXJzZVRyZWUgPSBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5mcm9tV2lkdGgod2lkdGgpLFxuICAgICAgICAgICAgICBob3Jpem9udGFsQnJhbmNoUGFyc2VUcmVlID0gSG9yaXpvbnRhbEJyYW5jaFBhcnNlVHJlZS5mcm9tV2lkdGgod2lkdGgpLFxuICAgICAgICAgICAgICBsZWZ0TWFyZ2luV2lkdGggPSBmaXJzdFZlcnRpY2FsQnJhbmNoUG9zaXRpb24sXG4gICAgICAgICAgICAgIHJpZ2h0TWFyZ2luV2lkdGggPSBjaGlsZE5vZGVQYXJzZVRyZWVzV2lkdGggLSB3aWR0aCAtIGxlZnRNYXJnaW5XaWR0aDtcblxuICAgICAgICB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5hZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCk7XG4gICAgICAgIHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlLmFkZFJpZ2h0TWFyZ2luKHJpZ2h0TWFyZ2luV2lkdGgpO1xuICAgICAgICBob3Jpem9udGFsQnJhbmNoUGFyc2VUcmVlLmFkZExlZnRNYXJnaW4obGVmdE1hcmdpbldpZHRoKTtcbiAgICAgICAgaG9yaXpvbnRhbEJyYW5jaFBhcnNlVHJlZS5hZGRSaWdodE1hcmdpbihyaWdodE1hcmdpbldpZHRoKTtcblxuICAgICAgICBjb25zdCB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID0gdmVydGljYWxCcmFuY2hQYXJzZVRyZWUuZ2V0VmVydGljYWxCcmFuY2hQb3NpdGlvbigpLFxuICAgICAgICAgICAgICBkZXB0aCA9IGNoaWxkTm9kZVBhcnNlVHJlZXNEZXB0aDsgLy8vXG5cbiAgICAgICAgY2hpbGROb2Rlc1BhcnNlVHJlZSA9IFZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlLmZyb21EZXB0aEFuZFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oQ2hpbGROb2Rlc1BhcnNlVHJlZSwgZGVwdGgsIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24pO1xuXG4gICAgICAgIGNoaWxkTm9kZVBhcnNlVHJlZXMuZm9yRWFjaCgoY2hpbGROb2RlUGFyc2VUcmVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZVBhcnNlVHJlZURlcHRoID0gY2hpbGROb2RlUGFyc2VUcmVlLmdldERlcHRoKCksXG4gICAgICAgICAgICAgICAgY2xvbmVkQ2hpbGROb2RlUGFyc2VUcmVlID0gY2hpbGROb2RlUGFyc2VUcmVlLmNsb25lKCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXggPCBjaGlsZE5vZGVQYXJzZVRyZWVzTGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRNYXJnaW5XaWR0aCA9IDE7XG5cbiAgICAgICAgICAgIGNsb25lZENoaWxkTm9kZVBhcnNlVHJlZS5hZGRSaWdodE1hcmdpbihyaWdodE1hcmdpbldpZHRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2hpbGROb2RlUGFyc2VUcmVlRGVwdGggPCBjaGlsZE5vZGVQYXJzZVRyZWVzRGVwdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbU1hcmdpbkRlcHRoID0gY2hpbGROb2RlUGFyc2VUcmVlc0RlcHRoIC0gY2hpbGROb2RlUGFyc2VUcmVlRGVwdGg7XG5cbiAgICAgICAgICAgIGNsb25lZENoaWxkTm9kZVBhcnNlVHJlZS5hZGRCb3R0b21NYXJnaW4oYm90dG9tTWFyZ2luRGVwdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNoaWxkTm9kZXNQYXJzZVRyZWUuYXBwZW5kVG9SaWdodChjbG9uZWRDaGlsZE5vZGVQYXJzZVRyZWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjaGlsZE5vZGVzUGFyc2VUcmVlLmFwcGVuZFRvVG9wKGhvcml6b250YWxCcmFuY2hQYXJzZVRyZWUpO1xuXG4gICAgICAgIGNoaWxkTm9kZXNQYXJzZVRyZWUuYXBwZW5kVG9Ub3AodmVydGljYWxCcmFuY2hQYXJzZVRyZWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGlsZE5vZGVzUGFyc2VUcmVlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiQ2hpbGROb2Rlc1BhcnNlVHJlZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSIsImZyb21DaGlsZE5vZGVzIiwiY2hpbGROb2RlcyIsImNoaWxkTm9kZXNQYXJzZVRyZWUiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY2hpbGROb2RlUGFyc2VUcmVlcyIsInJlZHVjZSIsImNoaWxkTm9kZSIsImNoaWxkTm9kZVBhcnNlVHJlZSIsImFzUGFyc2VUcmVlIiwicHVzaCIsImNoaWxkTm9kZVBhcnNlVHJlZXNMZW5ndGgiLCJmaXJzdENoaWxkTm9kZVBhcnNlVHJlZSIsImZpcnN0VmVydGljYWxCcmFuY2hQb3NpdGlvbiIsImxhc3RWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiY2hpbGROb2RlUGFyc2VUcmVlc1dpZHRoIiwiY2hpbGROb2RlUGFyc2VUcmVlc0RlcHRoIiwiZm9yRWFjaCIsImluZGV4IiwiY2hpbGROb2RlUGFyc2VUcmVlV2lkdGgiLCJnZXRXaWR0aCIsImNoaWxkTm9kZVBhcnNlVHJlZURlcHRoIiwiZ2V0RGVwdGgiLCJmaXJzdENoaWxkTm9kZVBhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb24iLCJnZXRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwibGFzdENoaWxkTm9kZVBhcnNlVHJlZSIsImxhc3RDaGlsZE5vZGVQYXJzZVRyZWVWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiTWF0aCIsIm1heCIsIndpZHRoIiwidmVydGljYWxCcmFuY2hQYXJzZVRyZWUiLCJmcm9tV2lkdGgiLCJob3Jpem9udGFsQnJhbmNoUGFyc2VUcmVlIiwiSG9yaXpvbnRhbEJyYW5jaFBhcnNlVHJlZSIsImxlZnRNYXJnaW5XaWR0aCIsInJpZ2h0TWFyZ2luV2lkdGgiLCJhZGRMZWZ0TWFyZ2luIiwiYWRkUmlnaHRNYXJnaW4iLCJ2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiZGVwdGgiLCJmcm9tRGVwdGhBbmRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiY2xvbmVkQ2hpbGROb2RlUGFyc2VUcmVlIiwiY2xvbmUiLCJib3R0b21NYXJnaW5EZXB0aCIsImFkZEJvdHRvbU1hcmdpbiIsImFwcGVuZFRvUmlnaHQiLCJhcHBlbmRUb1RvcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUFxQkE7OzsyQkFQVTt1RUFFSzt5RUFDRTs7Ozs7O0FBRXRDLE1BQU0sRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRWpCLE1BQU1GLDRCQUE0QkcsdUJBQXVCO0lBQ3RFLE9BQU9DLGVBQWVDLFVBQVUsRUFBRTtRQUNoQyxJQUFJQyxzQkFBc0I7UUFFMUIsTUFBTUMsbUJBQW1CRixXQUFXRyxNQUFNO1FBRTFDLElBQUlELG1CQUFtQixHQUFHO1lBQ3hCLE1BQU1FLHNCQUFzQkosV0FBV0ssTUFBTSxDQUFDLENBQUNELHFCQUFxQkU7Z0JBQzVELE1BQU1DLHFCQUFxQkQsVUFBVUUsV0FBVztnQkFFaERKLG9CQUFvQkssSUFBSSxDQUFDRjtnQkFFekIsT0FBT0g7WUFDVCxHQUFHLEVBQUUsR0FDTE0sNEJBQTRCTixvQkFBb0JELE1BQU07WUFFNUQsSUFBSU8sOEJBQThCLEdBQUc7Z0JBQ25DLE1BQU1DLDBCQUEwQmYsTUFBTVE7Z0JBRXRDSCxzQkFBc0JVLHlCQUEwQixHQUFHO1lBQ3JELE9BQU87Z0JBQ0wsSUFBSUMsNkJBQ0FDLDZCQUE2QixHQUM3QkMsMkJBQTJCLEdBQzNCQywyQkFBMkI7Z0JBRS9CWCxvQkFBb0JZLE9BQU8sQ0FBQyxDQUFDVCxvQkFBb0JVO29CQUMvQyxNQUFNQywwQkFBMEJYLG1CQUFtQlksUUFBUSxJQUNyREMsMEJBQTBCYixtQkFBbUJjLFFBQVE7b0JBRTNELElBQUlKLFVBQVUsR0FBRzt3QkFDZixNQUFNTiwwQkFBMEJKLG9CQUMxQmUsZ0RBQWdEWCx3QkFBd0JZLHlCQUF5Qjt3QkFFdkdYLDhCQUE4QlU7b0JBQ2hDO29CQUVBLElBQUlMLFVBQVVQLDRCQUE0QixHQUFHO3dCQUMzQyxNQUFNYyx5QkFBeUJqQixvQkFDekJrQiwrQ0FBK0NELHVCQUF1QkQseUJBQXlCO3dCQUVyR1YsOEJBQThCWTtvQkFDaEM7b0JBRUEsSUFBSVIsUUFBUVAsNEJBQTRCLEdBQUc7d0JBQ3pDRyw4QkFBOEJLO3dCQUM5QkwsOEJBQThCO3dCQUU5QkMsNEJBQTRCO29CQUM5QjtvQkFFQUEsNEJBQTRCSTtvQkFDNUJILDJCQUEyQlcsS0FBS0MsR0FBRyxDQUFDWiwwQkFBMEJLO2dCQUNoRTtnQkFFQSxNQUFNUSxRQUFRZiw2QkFBNkJELDhCQUE4QixHQUNuRWlCLDBCQUEwQi9CLHVCQUF1QixDQUFDZ0MsU0FBUyxDQUFDRixRQUM1REcsNEJBQTRCQyx5QkFBeUIsQ0FBQ0YsU0FBUyxDQUFDRixRQUNoRUssa0JBQWtCckIsNkJBQ2xCc0IsbUJBQW1CcEIsMkJBQTJCYyxRQUFRSztnQkFFNURKLHdCQUF3Qk0sYUFBYSxDQUFDRjtnQkFDdENKLHdCQUF3Qk8sY0FBYyxDQUFDRjtnQkFDdkNILDBCQUEwQkksYUFBYSxDQUFDRjtnQkFDeENGLDBCQUEwQkssY0FBYyxDQUFDRjtnQkFFekMsTUFBTUcseUJBQXlCUix3QkFBd0JOLHlCQUF5QixJQUMxRWUsUUFBUXZCLDBCQUEwQixHQUFHO2dCQUUzQ2Qsc0JBQXNCSCx1QkFBdUIsQ0FBQ3lDLGtDQUFrQyxDQUFDNUMscUJBQXFCMkMsT0FBT0Q7Z0JBRTdHakMsb0JBQW9CWSxPQUFPLENBQUMsQ0FBQ1Qsb0JBQW9CVTtvQkFDL0MsTUFBTUcsMEJBQTBCYixtQkFBbUJjLFFBQVEsSUFDckRtQiwyQkFBMkJqQyxtQkFBbUJrQyxLQUFLO29CQUV6RCxJQUFJeEIsUUFBUVAsNEJBQTRCLEdBQUc7d0JBQ3pDLE1BQU13QixtQkFBbUI7d0JBRXpCTSx5QkFBeUJKLGNBQWMsQ0FBQ0Y7b0JBQzFDO29CQUVBLElBQUlkLDBCQUEwQkwsMEJBQTBCO3dCQUN0RCxNQUFNMkIsb0JBQW9CM0IsMkJBQTJCSzt3QkFFckRvQix5QkFBeUJHLGVBQWUsQ0FBQ0Q7b0JBQzNDO29CQUVBekMsb0JBQW9CMkMsYUFBYSxDQUFDSjtnQkFDcEM7Z0JBRUF2QyxvQkFBb0I0QyxXQUFXLENBQUNkO2dCQUVoQzlCLG9CQUFvQjRDLFdBQVcsQ0FBQ2hCO1lBQ2xDO1FBQ0Y7UUFFQSxPQUFPNUI7SUFDVDtBQUNGIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
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 HorizontalBranchParseTree;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _necessary = require("necessary");
|
|
12
|
+
const _parseTree = /*#__PURE__*/ _interop_require_default(require("../parseTree"));
|
|
13
|
+
const _constants = require("../constants");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const { DASH_CHARACTER } = _necessary.characters;
|
|
20
|
+
class HorizontalBranchParseTree extends _parseTree.default {
|
|
21
|
+
static fromWidth(width) {
|
|
22
|
+
const string = stringFromCharactersWidth(width, DASH_CHARACTER), line = string, lines = [
|
|
23
|
+
line
|
|
24
|
+
], horizontalBranchParseTree = new HorizontalBranchParseTree(lines);
|
|
25
|
+
return horizontalBranchParseTree;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function stringFromCharactersWidth(charactersWidth, character) {
|
|
29
|
+
let string = _constants.EMPTY_STRING;
|
|
30
|
+
for(let index = 0; index < charactersWidth; index++){
|
|
31
|
+
string += character;
|
|
32
|
+
}
|
|
33
|
+
return string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvaG9yaXpvbnRhbEJyYW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgY2hhcmFjdGVycyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IFBhcnNlVHJlZSBmcm9tIFwiLi4vcGFyc2VUcmVlXCI7XG5cbmltcG9ydCB7IEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBEQVNIX0NIQVJBQ1RFUiB9ID0gY2hhcmFjdGVycztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSG9yaXpvbnRhbEJyYW5jaFBhcnNlVHJlZSBleHRlbmRzIFBhcnNlVHJlZSB7XG4gIHN0YXRpYyBmcm9tV2lkdGgod2lkdGgpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tQ2hhcmFjdGVyc1dpZHRoKHdpZHRoLCBEQVNIX0NIQVJBQ1RFUiksXG4gICAgICAgICAgbGluZSA9IHN0cmluZywgLy8vXG4gICAgICAgICAgbGluZXMgPSBbXG4gICAgICAgICAgICBsaW5lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBob3Jpem9udGFsQnJhbmNoUGFyc2VUcmVlID0gbmV3IEhvcml6b250YWxCcmFuY2hQYXJzZVRyZWUobGluZXMpO1xuXG4gICAgcmV0dXJuIGhvcml6b250YWxCcmFuY2hQYXJzZVRyZWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbUNoYXJhY3RlcnNXaWR0aChjaGFyYWN0ZXJzV2lkdGgsIGNoYXJhY3Rlcikge1xuICBsZXQgc3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGFyYWN0ZXJzV2lkdGg7IGluZGV4KyspIHtcbiAgICBzdHJpbmcgKz0gY2hhcmFjdGVyO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJIb3Jpem9udGFsQnJhbmNoUGFyc2VUcmVlIiwiREFTSF9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwiUGFyc2VUcmVlIiwiZnJvbVdpZHRoIiwid2lkdGgiLCJzdHJpbmciLCJzdHJpbmdGcm9tQ2hhcmFjdGVyc1dpZHRoIiwibGluZSIsImxpbmVzIiwiaG9yaXpvbnRhbEJyYW5jaFBhcnNlVHJlZSIsImNoYXJhY3RlcnNXaWR0aCIsImNoYXJhY3RlciIsIkVNUFRZX1NUUklORyIsImluZGV4Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXFCQTs7OzJCQVJNO2tFQUVMOzJCQUVPOzs7Ozs7QUFFN0IsTUFBTSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUJBQVU7QUFFdEIsTUFBTUYsa0NBQWtDRyxrQkFBUztJQUM5RCxPQUFPQyxVQUFVQyxLQUFLLEVBQUU7UUFDdEIsTUFBTUMsU0FBU0MsMEJBQTBCRixPQUFPSixpQkFDMUNPLE9BQU9GLFFBQ1BHLFFBQVE7WUFDTkQ7U0FDRCxFQUNERSw0QkFBNEIsSUFBSVYsMEJBQTBCUztRQUVoRSxPQUFPQztJQUNUO0FBQ0Y7QUFFQSxTQUFTSCwwQkFBMEJJLGVBQWUsRUFBRUMsU0FBUztJQUMzRCxJQUFJTixTQUFTTyx1QkFBWTtJQUV6QixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUgsaUJBQWlCRyxRQUFTO1FBQ3BEUixVQUFVTTtJQUNaO0lBRUEsT0FBT047QUFDVCJ9
|
|
@@ -0,0 +1,61 @@
|
|
|
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 NodeParseTree;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _string = /*#__PURE__*/ _interop_require_default(require("./string"));
|
|
12
|
+
const _childNodes = /*#__PURE__*/ _interop_require_default(require("./childNodes"));
|
|
13
|
+
const _verticalBranch = /*#__PURE__*/ _interop_require_default(require("./verticalBranch"));
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
class NodeParseTree extends _verticalBranch.default {
|
|
20
|
+
static fromNode(node) {
|
|
21
|
+
let nodeParseTree;
|
|
22
|
+
const childNodes = node.getChildNodes(), stringParseTree = _string.default.fromNode(node), childNodesParseTree = _childNodes.default.fromChildNodes(childNodes);
|
|
23
|
+
if (childNodesParseTree === null) {
|
|
24
|
+
const ruleNameParseTreeDepth = stringParseTree.getDepth(), ruleNameParseTreeVerticalBranchPosition = stringParseTree.getVerticalBranchPosition(), verticalBranchPosition = ruleNameParseTreeVerticalBranchPosition, depth = ruleNameParseTreeDepth; ///
|
|
25
|
+
nodeParseTree = _verticalBranch.default.fromDepthAndVerticalBranchPosition(NodeParseTree, depth, verticalBranchPosition);
|
|
26
|
+
nodeParseTree.appendToRight(stringParseTree);
|
|
27
|
+
} else {
|
|
28
|
+
let ruleNameParseTreeVerticalBranchPosition = stringParseTree.getVerticalBranchPosition();
|
|
29
|
+
const childNodesParseTreeVerticalBranchPosition = childNodesParseTree.getVerticalBranchPosition(), verticalBranchPositionsDifference = ruleNameParseTreeVerticalBranchPosition - childNodesParseTreeVerticalBranchPosition;
|
|
30
|
+
let leftMarginWidth;
|
|
31
|
+
if (false) {
|
|
32
|
+
///
|
|
33
|
+
} else if (verticalBranchPositionsDifference < 0) {
|
|
34
|
+
leftMarginWidth = -verticalBranchPositionsDifference;
|
|
35
|
+
stringParseTree.addLeftMargin(leftMarginWidth);
|
|
36
|
+
} else if (verticalBranchPositionsDifference > 0) {
|
|
37
|
+
leftMarginWidth = +verticalBranchPositionsDifference;
|
|
38
|
+
childNodesParseTree.addLeftMargin(leftMarginWidth);
|
|
39
|
+
}
|
|
40
|
+
const ruleNameParseTreeWidth = stringParseTree.getWidth(), childNodesParseTreeWidth = childNodesParseTree.getWidth(), widthsDifference = ruleNameParseTreeWidth - childNodesParseTreeWidth;
|
|
41
|
+
let rightMarginWidth;
|
|
42
|
+
if (false) {
|
|
43
|
+
///
|
|
44
|
+
} else if (widthsDifference < 0) {
|
|
45
|
+
rightMarginWidth = -widthsDifference;
|
|
46
|
+
stringParseTree.addRightMargin(rightMarginWidth);
|
|
47
|
+
} else if (widthsDifference > 0) {
|
|
48
|
+
rightMarginWidth = +widthsDifference;
|
|
49
|
+
childNodesParseTree.addRightMargin(rightMarginWidth);
|
|
50
|
+
}
|
|
51
|
+
ruleNameParseTreeVerticalBranchPosition = stringParseTree.getVerticalBranchPosition();
|
|
52
|
+
const ruleNameParseTreeDepth = stringParseTree.getDepth(), verticalBranchPosition = ruleNameParseTreeVerticalBranchPosition, depth = ruleNameParseTreeDepth; ///
|
|
53
|
+
nodeParseTree = _verticalBranch.default.fromDepthAndVerticalBranchPosition(NodeParseTree, depth, verticalBranchPosition);
|
|
54
|
+
nodeParseTree.appendToRight(stringParseTree);
|
|
55
|
+
nodeParseTree.appendToBottom(childNodesParseTree);
|
|
56
|
+
}
|
|
57
|
+
return nodeParseTree;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN0cmluZ1BhcnNlVHJlZSBmcm9tIFwiLi9zdHJpbmdcIjtcbmltcG9ydCBDaGlsZE5vZGVzUGFyc2VUcmVlIGZyb20gXCIuL2NoaWxkTm9kZXNcIjtcbmltcG9ydCBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSBmcm9tIFwiLi92ZXJ0aWNhbEJyYW5jaFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb2RlUGFyc2VUcmVlIGV4dGVuZHMgVmVydGljYWxCcmFuY2hQYXJzZVRyZWUge1xuICBzdGF0aWMgZnJvbU5vZGUobm9kZSkge1xuICAgIGxldCBub2RlUGFyc2VUcmVlO1xuXG4gICAgY29uc3QgY2hpbGROb2RlcyA9IG5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIHN0cmluZ1BhcnNlVHJlZSA9IFN0cmluZ1BhcnNlVHJlZS5mcm9tTm9kZShub2RlKSxcbiAgICAgICAgICBjaGlsZE5vZGVzUGFyc2VUcmVlID0gQ2hpbGROb2Rlc1BhcnNlVHJlZS5mcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzKTtcblxuICAgIGlmIChjaGlsZE5vZGVzUGFyc2VUcmVlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBydWxlTmFtZVBhcnNlVHJlZURlcHRoID0gc3RyaW5nUGFyc2VUcmVlLmdldERlcHRoKCksXG4gICAgICAgICAgICBydWxlTmFtZVBhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBzdHJpbmdQYXJzZVRyZWUuZ2V0VmVydGljYWxCcmFuY2hQb3NpdGlvbigpLFxuICAgICAgICAgICAgdmVydGljYWxCcmFuY2hQb3NpdGlvbiA9IHJ1bGVOYW1lUGFyc2VUcmVlVmVydGljYWxCcmFuY2hQb3NpdGlvbiwgLy8vXG4gICAgICAgICAgICBkZXB0aCA9IHJ1bGVOYW1lUGFyc2VUcmVlRGVwdGg7IC8vL1xuXG4gICAgICBub2RlUGFyc2VUcmVlID0gVmVydGljYWxCcmFuY2hQYXJzZVRyZWUuZnJvbURlcHRoQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihOb2RlUGFyc2VUcmVlLCBkZXB0aCwgdmVydGljYWxCcmFuY2hQb3NpdGlvbik7XG5cbiAgICAgIG5vZGVQYXJzZVRyZWUuYXBwZW5kVG9SaWdodChzdHJpbmdQYXJzZVRyZWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcnVsZU5hbWVQYXJzZVRyZWVWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID0gc3RyaW5nUGFyc2VUcmVlLmdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oKTtcblxuICAgICAgY29uc3QgY2hpbGROb2Rlc1BhcnNlVHJlZVZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBjaGlsZE5vZGVzUGFyc2VUcmVlLmdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oKSxcbiAgICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUG9zaXRpb25zRGlmZmVyZW5jZSA9IHJ1bGVOYW1lUGFyc2VUcmVlVmVydGljYWxCcmFuY2hQb3NpdGlvbiAtIGNoaWxkTm9kZXNQYXJzZVRyZWVWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uO1xuXG4gICAgICBsZXQgbGVmdE1hcmdpbldpZHRoO1xuXG4gICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgLy8vXG4gICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQnJhbmNoUG9zaXRpb25zRGlmZmVyZW5jZSA8IDApIHtcbiAgICAgICAgbGVmdE1hcmdpbldpZHRoID0gLXZlcnRpY2FsQnJhbmNoUG9zaXRpb25zRGlmZmVyZW5jZTtcblxuICAgICAgICBzdHJpbmdQYXJzZVRyZWUuYWRkTGVmdE1hcmdpbihsZWZ0TWFyZ2luV2lkdGgpO1xuICAgICAgfSBlbHNlIGlmICh2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uc0RpZmZlcmVuY2UgPiAwKSB7XG4gICAgICAgIGxlZnRNYXJnaW5XaWR0aCA9ICt2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uc0RpZmZlcmVuY2U7XG5cbiAgICAgICAgY2hpbGROb2Rlc1BhcnNlVHJlZS5hZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJ1bGVOYW1lUGFyc2VUcmVlV2lkdGggPSBzdHJpbmdQYXJzZVRyZWUuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIGNoaWxkTm9kZXNQYXJzZVRyZWVXaWR0aCA9IGNoaWxkTm9kZXNQYXJzZVRyZWUuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIHdpZHRoc0RpZmZlcmVuY2UgPSBydWxlTmFtZVBhcnNlVHJlZVdpZHRoIC0gY2hpbGROb2Rlc1BhcnNlVHJlZVdpZHRoO1xuXG4gICAgICBsZXQgcmlnaHRNYXJnaW5XaWR0aDtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIC8vL1xuICAgICAgfSBlbHNlIGlmICh3aWR0aHNEaWZmZXJlbmNlIDwgMCkge1xuICAgICAgICByaWdodE1hcmdpbldpZHRoID0gLXdpZHRoc0RpZmZlcmVuY2U7XG5cbiAgICAgICAgc3RyaW5nUGFyc2VUcmVlLmFkZFJpZ2h0TWFyZ2luKHJpZ2h0TWFyZ2luV2lkdGgpO1xuICAgICAgfSBlbHNlIGlmICh3aWR0aHNEaWZmZXJlbmNlID4gMCkge1xuICAgICAgICByaWdodE1hcmdpbldpZHRoID0gK3dpZHRoc0RpZmZlcmVuY2U7XG5cbiAgICAgICAgY2hpbGROb2Rlc1BhcnNlVHJlZS5hZGRSaWdodE1hcmdpbihyaWdodE1hcmdpbldpZHRoKTtcbiAgICAgIH1cblxuICAgICAgcnVsZU5hbWVQYXJzZVRyZWVWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID0gc3RyaW5nUGFyc2VUcmVlLmdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oKTtcblxuICAgICAgY29uc3QgcnVsZU5hbWVQYXJzZVRyZWVEZXB0aCA9IHN0cmluZ1BhcnNlVHJlZS5nZXREZXB0aCgpLFxuICAgICAgICAgICAgdmVydGljYWxCcmFuY2hQb3NpdGlvbiA9IHJ1bGVOYW1lUGFyc2VUcmVlVmVydGljYWxCcmFuY2hQb3NpdGlvbiwgLy8vXG4gICAgICAgICAgICBkZXB0aCA9IHJ1bGVOYW1lUGFyc2VUcmVlRGVwdGg7IC8vL1xuXG4gICAgICBub2RlUGFyc2VUcmVlID0gVmVydGljYWxCcmFuY2hQYXJzZVRyZWUuZnJvbURlcHRoQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihOb2RlUGFyc2VUcmVlLCBkZXB0aCwgdmVydGljYWxCcmFuY2hQb3NpdGlvbik7XG5cbiAgICAgIG5vZGVQYXJzZVRyZWUuYXBwZW5kVG9SaWdodChzdHJpbmdQYXJzZVRyZWUpO1xuXG4gICAgICBub2RlUGFyc2VUcmVlLmFwcGVuZFRvQm90dG9tKGNoaWxkTm9kZXNQYXJzZVRyZWUpO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlUGFyc2VUcmVlO1xuICB9XG59XG4iXSwibmFtZXMiOlsiTm9kZVBhcnNlVHJlZSIsIlZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlIiwiZnJvbU5vZGUiLCJub2RlIiwibm9kZVBhcnNlVHJlZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwic3RyaW5nUGFyc2VUcmVlIiwiU3RyaW5nUGFyc2VUcmVlIiwiY2hpbGROb2Rlc1BhcnNlVHJlZSIsIkNoaWxkTm9kZXNQYXJzZVRyZWUiLCJmcm9tQ2hpbGROb2RlcyIsInJ1bGVOYW1lUGFyc2VUcmVlRGVwdGgiLCJnZXREZXB0aCIsInJ1bGVOYW1lUGFyc2VUcmVlVmVydGljYWxCcmFuY2hQb3NpdGlvbiIsImdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24iLCJ2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiZGVwdGgiLCJmcm9tRGVwdGhBbmRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiYXBwZW5kVG9SaWdodCIsImNoaWxkTm9kZXNQYXJzZVRyZWVWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwidmVydGljYWxCcmFuY2hQb3NpdGlvbnNEaWZmZXJlbmNlIiwibGVmdE1hcmdpbldpZHRoIiwiYWRkTGVmdE1hcmdpbiIsInJ1bGVOYW1lUGFyc2VUcmVlV2lkdGgiLCJnZXRXaWR0aCIsImNoaWxkTm9kZXNQYXJzZVRyZWVXaWR0aCIsIndpZHRoc0RpZmZlcmVuY2UiLCJyaWdodE1hcmdpbldpZHRoIiwiYWRkUmlnaHRNYXJnaW4iLCJhcHBlbmRUb0JvdHRvbSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFxQkE7OzsrREFKTzttRUFDSTt1RUFDSTs7Ozs7O0FBRXJCLE1BQU1BLHNCQUFzQkMsdUJBQXVCO0lBQ2hFLE9BQU9DLFNBQVNDLElBQUksRUFBRTtRQUNwQixJQUFJQztRQUVKLE1BQU1DLGFBQWFGLEtBQUtHLGFBQWEsSUFDL0JDLGtCQUFrQkMsZUFBZSxDQUFDTixRQUFRLENBQUNDLE9BQzNDTSxzQkFBc0JDLG1CQUFtQixDQUFDQyxjQUFjLENBQUNOO1FBRS9ELElBQUlJLHdCQUF3QixNQUFNO1lBQ2hDLE1BQU1HLHlCQUF5QkwsZ0JBQWdCTSxRQUFRLElBQ2pEQywwQ0FBMENQLGdCQUFnQlEseUJBQXlCLElBQ25GQyx5QkFBeUJGLHlDQUN6QkcsUUFBUUwsd0JBQXdCLEdBQUc7WUFFekNSLGdCQUFnQkgsdUJBQXVCLENBQUNpQixrQ0FBa0MsQ0FBQ2xCLGVBQWVpQixPQUFPRDtZQUVqR1osY0FBY2UsYUFBYSxDQUFDWjtRQUM5QixPQUFPO1lBQ0wsSUFBSU8sMENBQTBDUCxnQkFBZ0JRLHlCQUF5QjtZQUV2RixNQUFNSyw0Q0FBNENYLG9CQUFvQk0seUJBQXlCLElBQ3pGTSxvQ0FBb0NQLDBDQUEwQ007WUFFcEYsSUFBSUU7WUFFSixJQUFJLE9BQU87WUFDVCxHQUFHO1lBQ0wsT0FBTyxJQUFJRCxvQ0FBb0MsR0FBRztnQkFDaERDLGtCQUFrQixDQUFDRDtnQkFFbkJkLGdCQUFnQmdCLGFBQWEsQ0FBQ0Q7WUFDaEMsT0FBTyxJQUFJRCxvQ0FBb0MsR0FBRztnQkFDaERDLGtCQUFrQixDQUFDRDtnQkFFbkJaLG9CQUFvQmMsYUFBYSxDQUFDRDtZQUNwQztZQUVBLE1BQU1FLHlCQUF5QmpCLGdCQUFnQmtCLFFBQVEsSUFDakRDLDJCQUEyQmpCLG9CQUFvQmdCLFFBQVEsSUFDdkRFLG1CQUFtQkgseUJBQXlCRTtZQUVsRCxJQUFJRTtZQUVKLElBQUksT0FBTztZQUNULEdBQUc7WUFDTCxPQUFPLElBQUlELG1CQUFtQixHQUFHO2dCQUMvQkMsbUJBQW1CLENBQUNEO2dCQUVwQnBCLGdCQUFnQnNCLGNBQWMsQ0FBQ0Q7WUFDakMsT0FBTyxJQUFJRCxtQkFBbUIsR0FBRztnQkFDL0JDLG1CQUFtQixDQUFDRDtnQkFFcEJsQixvQkFBb0JvQixjQUFjLENBQUNEO1lBQ3JDO1lBRUFkLDBDQUEwQ1AsZ0JBQWdCUSx5QkFBeUI7WUFFbkYsTUFBTUgseUJBQXlCTCxnQkFBZ0JNLFFBQVEsSUFDakRHLHlCQUF5QkYseUNBQ3pCRyxRQUFRTCx3QkFBd0IsR0FBRztZQUV6Q1IsZ0JBQWdCSCx1QkFBdUIsQ0FBQ2lCLGtDQUFrQyxDQUFDbEIsZUFBZWlCLE9BQU9EO1lBRWpHWixjQUFjZSxhQUFhLENBQUNaO1lBRTVCSCxjQUFjMEIsY0FBYyxDQUFDckI7UUFDL0I7UUFFQSxPQUFPTDtJQUNUO0FBQ0YifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
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 StringParseTree;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _verticalBranch = /*#__PURE__*/ _interop_require_default(require("./verticalBranch"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
class StringParseTree extends _verticalBranch.default {
|
|
18
|
+
static fromNode(node) {
|
|
19
|
+
const string = node.asString(), stringLength = string.length, verticalBranchParseTreeWidth = stringLength, verticalBranchParseTree = _verticalBranch.default.fromWidth(verticalBranchParseTreeWidth), verticalBranchPosition = verticalBranchParseTree.getVerticalBranchPosition(), ruleNameParseTree = _verticalBranch.default.fromStringAndVerticalBranchPosition(StringParseTree, string, verticalBranchPosition);
|
|
20
|
+
ruleNameParseTree.appendToTop(verticalBranchParseTree);
|
|
21
|
+
return ruleNameParseTree;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVmVydGljYWxCcmFuY2hQYXJzZVRyZWUgZnJvbSBcIi4vdmVydGljYWxCcmFuY2hcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5nUGFyc2VUcmVlIGV4dGVuZHMgVmVydGljYWxCcmFuY2hQYXJzZVRyZWUge1xuICBzdGF0aWMgZnJvbU5vZGUobm9kZSkge1xuICAgIGNvbnN0IHN0cmluZyA9IG5vZGUuYXNTdHJpbmcoKSxcbiAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlV2lkdGggPSBzdHJpbmdMZW5ndGgsIC8vL1xuICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlID0gVmVydGljYWxCcmFuY2hQYXJzZVRyZWUuZnJvbVdpZHRoKHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlV2lkdGgpLFxuICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5nZXRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKCksXG4gICAgICAgICAgcnVsZU5hbWVQYXJzZVRyZWUgPSBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5mcm9tU3RyaW5nQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihTdHJpbmdQYXJzZVRyZWUsIHN0cmluZywgdmVydGljYWxCcmFuY2hQb3NpdGlvbik7XG5cbiAgICBydWxlTmFtZVBhcnNlVHJlZS5hcHBlbmRUb1RvcCh2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSk7XG5cbiAgICByZXR1cm4gcnVsZU5hbWVQYXJzZVRyZWU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTdHJpbmdQYXJzZVRyZWUiLCJWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSIsImZyb21Ob2RlIiwibm9kZSIsInN0cmluZyIsImFzU3RyaW5nIiwic3RyaW5nTGVuZ3RoIiwibGVuZ3RoIiwidmVydGljYWxCcmFuY2hQYXJzZVRyZWVXaWR0aCIsInZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlIiwiZnJvbVdpZHRoIiwidmVydGljYWxCcmFuY2hQb3NpdGlvbiIsImdldFZlcnRpY2FsQnJhbmNoUG9zaXRpb24iLCJydWxlTmFtZVBhcnNlVHJlZSIsImZyb21TdHJpbmdBbmRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiYXBwZW5kVG9Ub3AiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7dUVBRmU7Ozs7OztBQUVyQixNQUFNQSx3QkFBd0JDLHVCQUF1QjtJQUNsRSxPQUFPQyxTQUFTQyxJQUFJLEVBQUU7UUFDcEIsTUFBTUMsU0FBU0QsS0FBS0UsUUFBUSxJQUN0QkMsZUFBZUYsT0FBT0csTUFBTSxFQUM1QkMsK0JBQStCRixjQUMvQkcsMEJBQTBCUix1QkFBdUIsQ0FBQ1MsU0FBUyxDQUFDRiwrQkFDNURHLHlCQUF5QkYsd0JBQXdCRyx5QkFBeUIsSUFDMUVDLG9CQUFvQlosdUJBQXVCLENBQUNhLG1DQUFtQyxDQUFDZCxpQkFBaUJJLFFBQVFPO1FBRS9HRSxrQkFBa0JFLFdBQVcsQ0FBQ047UUFFOUIsT0FBT0k7SUFDVDtBQUNGIn0=
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
const _necessary = require("necessary");
|
|
12
|
+
const _parseTree = /*#__PURE__*/ _interop_require_default(require("../parseTree"));
|
|
13
|
+
const _constants = require("../constants");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const { BAR_CHARACTER } = _necessary.characters;
|
|
20
|
+
class VerticalBranchParseTree extends _parseTree.default {
|
|
21
|
+
constructor(lines, verticalBranchPosition){
|
|
22
|
+
super(lines);
|
|
23
|
+
this.verticalBranchPosition = verticalBranchPosition;
|
|
24
|
+
}
|
|
25
|
+
getVerticalBranchPosition() {
|
|
26
|
+
return this.verticalBranchPosition;
|
|
27
|
+
}
|
|
28
|
+
addLeftMargin(leftMarginWidth) {
|
|
29
|
+
super.addLeftMargin(leftMarginWidth);
|
|
30
|
+
this.verticalBranchPosition += leftMarginWidth; ///
|
|
31
|
+
}
|
|
32
|
+
static fromWidth(width) {
|
|
33
|
+
const string = BAR_CHARACTER, verticalBranchPosition = 0, verticalBranchParseTree = VerticalBranchParseTree.fromStringAndVerticalBranchPosition(VerticalBranchParseTree, string, verticalBranchPosition), leftMarginWidth = Math.floor(width / 2), rightMarginWidth = width - leftMarginWidth - 1;
|
|
34
|
+
verticalBranchParseTree.addLeftMargin(leftMarginWidth);
|
|
35
|
+
verticalBranchParseTree.addRightMargin(rightMarginWidth);
|
|
36
|
+
return verticalBranchParseTree;
|
|
37
|
+
}
|
|
38
|
+
static fromDepthAndVerticalBranchPosition(Class, depth, verticalBranchPosition) {
|
|
39
|
+
const lines = linesFromDepth(depth), verticalBranchParseTree = new Class(lines, verticalBranchPosition);
|
|
40
|
+
return verticalBranchParseTree;
|
|
41
|
+
}
|
|
42
|
+
static fromStringAndVerticalBranchPosition(Class, string, verticalBranchPosition) {
|
|
43
|
+
if (verticalBranchPosition === undefined) {
|
|
44
|
+
verticalBranchPosition = string; ///
|
|
45
|
+
string = Class; ///
|
|
46
|
+
Class = _parseTree.default; ///
|
|
47
|
+
}
|
|
48
|
+
const line = string, lines = [
|
|
49
|
+
line
|
|
50
|
+
], verticalBranchParseTree = new Class(lines, verticalBranchPosition);
|
|
51
|
+
return verticalBranchParseTree;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function linesFromDepth(depth) {
|
|
55
|
+
const lines = [];
|
|
56
|
+
let index = 0;
|
|
57
|
+
while(index < depth){
|
|
58
|
+
lines[index++] = _constants.EMPTY_STRING;
|
|
59
|
+
}
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZVRyZWUvdmVydGljYWxCcmFuY2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNoYXJhY3RlcnMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgQkFSX0NIQVJBQ1RFUiB9ID0gY2hhcmFjdGVycztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVydGljYWxCcmFuY2hQYXJzZVRyZWUgZXh0ZW5kcyBQYXJzZVRyZWUge1xuICBjb25zdHJ1Y3RvcihsaW5lcywgdmVydGljYWxCcmFuY2hQb3NpdGlvbikge1xuICAgIHN1cGVyKGxpbmVzKTtcbiAgICBcbiAgICB0aGlzLnZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uO1xuICB9XG4gIFxuICBnZXRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnZlcnRpY2FsQnJhbmNoUG9zaXRpb247XG4gIH1cblxuICBhZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCkge1xuICAgIHN1cGVyLmFkZExlZnRNYXJnaW4obGVmdE1hcmdpbldpZHRoKTtcblxuICAgIHRoaXMudmVydGljYWxCcmFuY2hQb3NpdGlvbiArPSBsZWZ0TWFyZ2luV2lkdGg7IC8vL1xuICB9XG5cbiAgc3RhdGljIGZyb21XaWR0aCh3aWR0aCkge1xuICAgIGNvbnN0IHN0cmluZyA9IEJBUl9DSEFSQUNURVIsXG4gICAgICAgICAgdmVydGljYWxCcmFuY2hQb3NpdGlvbiA9IDAsXG4gICAgICAgICAgdmVydGljYWxCcmFuY2hQYXJzZVRyZWUgPSBWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5mcm9tU3RyaW5nQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSwgc3RyaW5nLCB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKSxcbiAgICAgICAgICBsZWZ0TWFyZ2luV2lkdGggPSBNYXRoLmZsb29yKHdpZHRoLzIpLFxuICAgICAgICAgIHJpZ2h0TWFyZ2luV2lkdGggPSB3aWR0aCAtIGxlZnRNYXJnaW5XaWR0aCAtIDE7XG5cbiAgICB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZS5hZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCk7XG4gICAgdmVydGljYWxCcmFuY2hQYXJzZVRyZWUuYWRkUmlnaHRNYXJnaW4ocmlnaHRNYXJnaW5XaWR0aCk7XG5cbiAgICByZXR1cm4gdmVydGljYWxCcmFuY2hQYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbURlcHRoQW5kVmVydGljYWxCcmFuY2hQb3NpdGlvbihDbGFzcywgZGVwdGgsIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24pIHtcbiAgICBjb25zdCBsaW5lcyA9IGxpbmVzRnJvbURlcHRoKGRlcHRoKSxcbiAgICAgICAgICB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSA9IG5ldyBDbGFzcyhsaW5lcywgdmVydGljYWxCcmFuY2hQb3NpdGlvbik7XG5cbiAgICByZXR1cm4gdmVydGljYWxCcmFuY2hQYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0cmluZ0FuZFZlcnRpY2FsQnJhbmNoUG9zaXRpb24oQ2xhc3MsIHN0cmluZywgdmVydGljYWxCcmFuY2hQb3NpdGlvbikge1xuICAgIGlmICh2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZlcnRpY2FsQnJhbmNoUG9zaXRpb24gPSBzdHJpbmc7ICAvLy9cblxuICAgICAgc3RyaW5nID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFBhcnNlVHJlZTsgIC8vL1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBsaW5lID0gc3RyaW5nLCAvLy9cbiAgICAgICAgICBsaW5lcyA9IFtcbiAgICAgICAgICAgIGxpbmVcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlID0gbmV3IENsYXNzKGxpbmVzLCB2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uKTtcblxuICAgIHJldHVybiB2ZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsaW5lc0Zyb21EZXB0aChkZXB0aCkge1xuICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGluZGV4IDwgZGVwdGgpIHtcbiAgICBsaW5lc1tpbmRleCsrXSA9IEVNUFRZX1NUUklORztcbiAgfVxuXG4gIHJldHVybiBsaW5lcztcbn1cbiJdLCJuYW1lcyI6WyJWZXJ0aWNhbEJyYW5jaFBhcnNlVHJlZSIsIkJBUl9DSEFSQUNURVIiLCJjaGFyYWN0ZXJzIiwiUGFyc2VUcmVlIiwibGluZXMiLCJ2ZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiZ2V0VmVydGljYWxCcmFuY2hQb3NpdGlvbiIsImFkZExlZnRNYXJnaW4iLCJsZWZ0TWFyZ2luV2lkdGgiLCJmcm9tV2lkdGgiLCJ3aWR0aCIsInN0cmluZyIsInZlcnRpY2FsQnJhbmNoUGFyc2VUcmVlIiwiZnJvbVN0cmluZ0FuZFZlcnRpY2FsQnJhbmNoUG9zaXRpb24iLCJNYXRoIiwiZmxvb3IiLCJyaWdodE1hcmdpbldpZHRoIiwiYWRkUmlnaHRNYXJnaW4iLCJmcm9tRGVwdGhBbmRWZXJ0aWNhbEJyYW5jaFBvc2l0aW9uIiwiQ2xhc3MiLCJkZXB0aCIsImxpbmVzRnJvbURlcHRoIiwidW5kZWZpbmVkIiwibGluZSIsImluZGV4IiwiRU1QVFlfU1RSSU5HIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXFCQTs7OzJCQVJNO2tFQUVMOzJCQUVPOzs7Ozs7QUFFN0IsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0MscUJBQVU7QUFFckIsTUFBTUYsZ0NBQWdDRyxrQkFBUztJQUM1RCxZQUFZQyxLQUFLLEVBQUVDLHNCQUFzQixDQUFFO1FBQ3pDLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLHNCQUFzQixHQUFHQTtJQUNoQztJQUVBQyw0QkFBNEI7UUFDMUIsT0FBTyxJQUFJLENBQUNELHNCQUFzQjtJQUNwQztJQUVBRSxjQUFjQyxlQUFlLEVBQUU7UUFDN0IsS0FBSyxDQUFDRCxjQUFjQztRQUVwQixJQUFJLENBQUNILHNCQUFzQixJQUFJRyxpQkFBaUIsR0FBRztJQUNyRDtJQUVBLE9BQU9DLFVBQVVDLEtBQUssRUFBRTtRQUN0QixNQUFNQyxTQUFTVixlQUNUSSx5QkFBeUIsR0FDekJPLDBCQUEwQlosd0JBQXdCYSxtQ0FBbUMsQ0FBQ2IseUJBQXlCVyxRQUFRTix5QkFDdkhHLGtCQUFrQk0sS0FBS0MsS0FBSyxDQUFDTCxRQUFNLElBQ25DTSxtQkFBbUJOLFFBQVFGLGtCQUFrQjtRQUVuREksd0JBQXdCTCxhQUFhLENBQUNDO1FBQ3RDSSx3QkFBd0JLLGNBQWMsQ0FBQ0Q7UUFFdkMsT0FBT0o7SUFDVDtJQUVBLE9BQU9NLG1DQUFtQ0MsS0FBSyxFQUFFQyxLQUFLLEVBQUVmLHNCQUFzQixFQUFFO1FBQzlFLE1BQU1ELFFBQVFpQixlQUFlRCxRQUN2QlIsMEJBQTBCLElBQUlPLE1BQU1mLE9BQU9DO1FBRWpELE9BQU9PO0lBQ1Q7SUFFQSxPQUFPQyxvQ0FBb0NNLEtBQUssRUFBRVIsTUFBTSxFQUFFTixzQkFBc0IsRUFBRTtRQUNoRixJQUFJQSwyQkFBMkJpQixXQUFXO1lBQ3hDakIseUJBQXlCTSxRQUFTLEdBQUc7WUFFckNBLFNBQVNRLE9BQU8sR0FBRztZQUVuQkEsUUFBUWhCLGtCQUFTLEVBQUcsR0FBRztRQUN6QjtRQUVBLE1BQU1vQixPQUFPWixRQUNQUCxRQUFRO1lBQ05tQjtTQUNELEVBQ0RYLDBCQUEwQixJQUFJTyxNQUFNZixPQUFPQztRQUVqRCxPQUFPTztJQUNUO0FBQ0Y7QUFFQSxTQUFTUyxlQUFlRCxLQUFLO0lBQzNCLE1BQU1oQixRQUFRLEVBQUU7SUFFaEIsSUFBSW9CLFFBQVE7SUFFWixNQUFPQSxRQUFRSixNQUFPO1FBQ3BCaEIsS0FBSyxDQUFDb0IsUUFBUSxHQUFHQyx1QkFBWTtJQUMvQjtJQUVBLE9BQU9yQjtBQUNUIn0=
|
package/lib/parseTree.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
const _necessary = require("necessary");
|
|
12
|
+
const _constants = require("./constants");
|
|
13
|
+
const { last } = _necessary.arrayUtilities, { NEW_LINE_CHARACTER, SPACE_CHARACTER } = _necessary.characters;
|
|
14
|
+
class ParseTree {
|
|
15
|
+
constructor(lines){
|
|
16
|
+
this.lines = lines;
|
|
17
|
+
}
|
|
18
|
+
clone() {
|
|
19
|
+
const lines = this.lines.slice(), parseTree = new ParseTree(lines);
|
|
20
|
+
return parseTree;
|
|
21
|
+
}
|
|
22
|
+
getWidth() {
|
|
23
|
+
let width;
|
|
24
|
+
let linesLength = this.lines.length;
|
|
25
|
+
if (linesLength === 0) {
|
|
26
|
+
width = 0;
|
|
27
|
+
} else {
|
|
28
|
+
const lastLine = last(this.lines), lastLineLength = lastLine.length;
|
|
29
|
+
width = lastLineLength; ///
|
|
30
|
+
}
|
|
31
|
+
return width;
|
|
32
|
+
}
|
|
33
|
+
getDepth() {
|
|
34
|
+
const linesLength = this.lines.length, depth = linesLength; ///
|
|
35
|
+
return depth;
|
|
36
|
+
}
|
|
37
|
+
forEachLine(callback) {
|
|
38
|
+
this.lines.forEach(callback);
|
|
39
|
+
}
|
|
40
|
+
appendToTop(parseTree) {
|
|
41
|
+
parseTree.forEachLine((line)=>{
|
|
42
|
+
this.lines.unshift(line);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
appendToLeft(parseTree) {
|
|
46
|
+
parseTree.forEachLine((line, index)=>{
|
|
47
|
+
this.lines[index] = line + this.lines[index];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
appendToRight(parseTree) {
|
|
51
|
+
parseTree.forEachLine((line, index)=>{
|
|
52
|
+
this.lines[index] = this.lines[index] + line;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
appendToBottom(parseTree) {
|
|
56
|
+
parseTree.forEachLine((line)=>{
|
|
57
|
+
this.lines.push(line);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
addTopMargin(topMarginDepth) {
|
|
61
|
+
const width = this.getWidth(), topMarginWidth = width, topMarginString = marginStringFromMarginWidth(topMarginWidth);
|
|
62
|
+
for(let index = 0; index < topMarginDepth; index++){
|
|
63
|
+
this.lines.unshift(topMarginString);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
addLeftMargin(leftMarginWidth) {
|
|
67
|
+
const leftMarginString = marginStringFromMarginWidth(leftMarginWidth), linesLength = this.lines.length;
|
|
68
|
+
for(let index = 0; index < linesLength; index++){
|
|
69
|
+
this.lines[index] = leftMarginString + this.lines[index];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
addRightMargin(rightMarginWidth) {
|
|
73
|
+
const rightMarginString = marginStringFromMarginWidth(rightMarginWidth), linesLength = this.lines.length;
|
|
74
|
+
for(let index = 0; index < linesLength; index++){
|
|
75
|
+
this.lines[index] = this.lines[index] + rightMarginString;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
addBottomMargin(bottomMarginDepth) {
|
|
79
|
+
const width = this.getWidth(), bottomMarginWidth = width, bottomMarginString = marginStringFromMarginWidth(bottomMarginWidth);
|
|
80
|
+
for(let index = 0; index < bottomMarginDepth; index++){
|
|
81
|
+
this.lines.push(bottomMarginString);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
popLine() {
|
|
85
|
+
return this.lines.pop();
|
|
86
|
+
}
|
|
87
|
+
shiftLine() {
|
|
88
|
+
return this.lines.shift();
|
|
89
|
+
}
|
|
90
|
+
pushLine(line) {
|
|
91
|
+
this.lines.push(line);
|
|
92
|
+
}
|
|
93
|
+
unshiftLine(line) {
|
|
94
|
+
this.lines.unshift(line);
|
|
95
|
+
}
|
|
96
|
+
asString() {
|
|
97
|
+
const string = this.lines.reduce((string, line)=>{
|
|
98
|
+
string += line + NEW_LINE_CHARACTER;
|
|
99
|
+
return string;
|
|
100
|
+
}, _constants.EMPTY_STRING);
|
|
101
|
+
return string;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function marginStringFromMarginWidth(marginWidth, spaceCharacter) {
|
|
105
|
+
spaceCharacter = spaceCharacter || SPACE_CHARACTER;
|
|
106
|
+
let marginString = _constants.EMPTY_STRING;
|
|
107
|
+
for(let index = 0; index < marginWidth; index++){
|
|
108
|
+
marginString += spaceCharacter;
|
|
109
|
+
}
|
|
110
|
+
return marginString;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZVRyZWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGNoYXJhY3RlcnMsIGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgTkVXX0xJTkVfQ0hBUkFDVEVSLCBTUEFDRV9DSEFSQUNURVIgfSA9IGNoYXJhY3RlcnM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlVHJlZSB7XG4gIGNvbnN0cnVjdG9yKGxpbmVzKSB7XG4gICAgdGhpcy5saW5lcyA9IGxpbmVzO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgbGluZXMgPSB0aGlzLmxpbmVzLnNsaWNlKCksICAvLy9cbiAgICAgICAgICBwYXJzZVRyZWUgPSBuZXcgUGFyc2VUcmVlKGxpbmVzKTtcblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBnZXRXaWR0aCgpIHtcbiAgICBsZXQgd2lkdGg7XG5cbiAgICBsZXQgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aDtcblxuICAgIGlmIChsaW5lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgd2lkdGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0TGluZSA9IGxhc3QodGhpcy5saW5lcyksXG4gICAgICAgICAgICBsYXN0TGluZUxlbmd0aCA9IGxhc3RMaW5lLmxlbmd0aDtcblxuICAgICAgd2lkdGggPSBsYXN0TGluZUxlbmd0aDsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHdpZHRoO1xuICB9XG5cbiAgZ2V0RGVwdGgoKSB7XG4gICAgY29uc3QgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aCxcbiAgICAgICAgICBkZXB0aCA9IGxpbmVzTGVuZ3RoOyAgLy8vXG5cbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cblxuICBmb3JFYWNoTGluZShjYWxsYmFjaykge1xuICAgIHRoaXMubGluZXMuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBhcHBlbmRUb1RvcChwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUpID0+IHtcbiAgICAgIHRoaXMubGluZXMudW5zaGlmdChsaW5lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvTGVmdChwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLmxpbmVzW2luZGV4XSA9IGxpbmUgKyB0aGlzLmxpbmVzW2luZGV4XTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGVuZFRvUmlnaHQocGFyc2VUcmVlKSB7XG4gICAgcGFyc2VUcmVlLmZvckVhY2hMaW5lKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5saW5lc1tpbmRleF0gPSB0aGlzLmxpbmVzW2luZGV4XSArIGxpbmU7XG4gICAgfSk7XG4gIH1cblxuICBhcHBlbmRUb0JvdHRvbShwYXJzZVRyZWUpIHtcbiAgICBwYXJzZVRyZWUuZm9yRWFjaExpbmUoKGxpbmUpID0+IHtcbiAgICAgIHRoaXMubGluZXMucHVzaChsaW5lKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRvcE1hcmdpbih0b3BNYXJnaW5EZXB0aCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpLFxuICAgICAgICAgIHRvcE1hcmdpbldpZHRoID0gd2lkdGgsICAvLy9cbiAgICAgICAgICB0b3BNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgodG9wTWFyZ2luV2lkdGgpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRvcE1hcmdpbkRlcHRoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzLnVuc2hpZnQodG9wTWFyZ2luU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBhZGRMZWZ0TWFyZ2luKGxlZnRNYXJnaW5XaWR0aCkge1xuICAgIGNvbnN0IGxlZnRNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgobGVmdE1hcmdpbldpZHRoKSxcbiAgICAgICAgICBsaW5lc0xlbmd0aCA9IHRoaXMubGluZXMubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpbmVzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzW2luZGV4XSA9IGxlZnRNYXJnaW5TdHJpbmcgKyB0aGlzLmxpbmVzW2luZGV4XTtcbiAgICB9XG4gIH1cblxuICBhZGRSaWdodE1hcmdpbihyaWdodE1hcmdpbldpZHRoKSB7XG4gICAgY29uc3QgcmlnaHRNYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgocmlnaHRNYXJnaW5XaWR0aCksXG4gICAgICAgICAgbGluZXNMZW5ndGggPSB0aGlzLmxpbmVzLmxlbmd0aDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lc0xlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdGhpcy5saW5lc1tpbmRleF0gPSB0aGlzLmxpbmVzW2luZGV4XSArIHJpZ2h0TWFyZ2luU3RyaW5nO1xuICAgIH1cbiAgfVxuXG4gIGFkZEJvdHRvbU1hcmdpbihib3R0b21NYXJnaW5EZXB0aCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpLFxuICAgICAgICAgIGJvdHRvbU1hcmdpbldpZHRoID0gd2lkdGgsICAvLy9cbiAgICAgICAgICBib3R0b21NYXJnaW5TdHJpbmcgPSBtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgoYm90dG9tTWFyZ2luV2lkdGgpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJvdHRvbU1hcmdpbkRlcHRoOyBpbmRleCsrKSB7XG4gICAgICB0aGlzLmxpbmVzLnB1c2goYm90dG9tTWFyZ2luU3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgXG4gIHBvcExpbmUoKSB7IHJldHVybiB0aGlzLmxpbmVzLnBvcCgpOyB9XG4gIFxuICBzaGlmdExpbmUoKSB7IHJldHVybiB0aGlzLmxpbmVzLnNoaWZ0KCk7IH1cbiAgXG4gIHB1c2hMaW5lKGxpbmUpIHsgdGhpcy5saW5lcy5wdXNoKGxpbmUpOyB9XG4gIFxuICB1bnNoaWZ0TGluZShsaW5lKSB7IHRoaXMubGluZXMudW5zaGlmdChsaW5lKTsgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMubGluZXMucmVkdWNlKChzdHJpbmcsIGxpbmUpID0+IHtcbiAgICAgIHN0cmluZyArPSBsaW5lICsgTkVXX0xJTkVfQ0hBUkFDVEVSO1xuXG4gICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmdpblN0cmluZ0Zyb21NYXJnaW5XaWR0aChtYXJnaW5XaWR0aCwgc3BhY2VDaGFyYWN0ZXIpIHtcbiAgc3BhY2VDaGFyYWN0ZXIgPSBzcGFjZUNoYXJhY3RlciB8fCBTUEFDRV9DSEFSQUNURVI7XG5cbiAgbGV0IG1hcmdpblN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWFyZ2luV2lkdGg7IGluZGV4KyspIHtcbiAgICBtYXJnaW5TdHJpbmcgKz0gc3BhY2VDaGFyYWN0ZXI7XG4gIH1cblxuICByZXR1cm4gbWFyZ2luU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIlBhcnNlVHJlZSIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsIk5FV19MSU5FX0NIQVJBQ1RFUiIsIlNQQUNFX0NIQVJBQ1RFUiIsImNoYXJhY3RlcnMiLCJsaW5lcyIsImNsb25lIiwic2xpY2UiLCJwYXJzZVRyZWUiLCJnZXRXaWR0aCIsIndpZHRoIiwibGluZXNMZW5ndGgiLCJsZW5ndGgiLCJsYXN0TGluZSIsImxhc3RMaW5lTGVuZ3RoIiwiZ2V0RGVwdGgiLCJkZXB0aCIsImZvckVhY2hMaW5lIiwiY2FsbGJhY2siLCJmb3JFYWNoIiwiYXBwZW5kVG9Ub3AiLCJsaW5lIiwidW5zaGlmdCIsImFwcGVuZFRvTGVmdCIsImluZGV4IiwiYXBwZW5kVG9SaWdodCIsImFwcGVuZFRvQm90dG9tIiwicHVzaCIsImFkZFRvcE1hcmdpbiIsInRvcE1hcmdpbkRlcHRoIiwidG9wTWFyZ2luV2lkdGgiLCJ0b3BNYXJnaW5TdHJpbmciLCJtYXJnaW5TdHJpbmdGcm9tTWFyZ2luV2lkdGgiLCJhZGRMZWZ0TWFyZ2luIiwibGVmdE1hcmdpbldpZHRoIiwibGVmdE1hcmdpblN0cmluZyIsImFkZFJpZ2h0TWFyZ2luIiwicmlnaHRNYXJnaW5XaWR0aCIsInJpZ2h0TWFyZ2luU3RyaW5nIiwiYWRkQm90dG9tTWFyZ2luIiwiYm90dG9tTWFyZ2luRGVwdGgiLCJib3R0b21NYXJnaW5XaWR0aCIsImJvdHRvbU1hcmdpblN0cmluZyIsInBvcExpbmUiLCJwb3AiLCJzaGlmdExpbmUiLCJzaGlmdCIsInB1c2hMaW5lIiwidW5zaGlmdExpbmUiLCJhc1N0cmluZyIsInN0cmluZyIsInJlZHVjZSIsIkVNUFRZX1NUUklORyIsIm1hcmdpbldpZHRoIiwic3BhY2VDaGFyYWN0ZXIiLCJtYXJnaW5TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBcUJBOzs7MkJBUHNCOzJCQUVkO0FBRTdCLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHlCQUFjLEVBQ3pCLEVBQUVDLGtCQUFrQixFQUFFQyxlQUFlLEVBQUUsR0FBR0MscUJBQVU7QUFFM0MsTUFBTUw7SUFDbkIsWUFBWU0sS0FBSyxDQUFFO1FBQ2pCLElBQUksQ0FBQ0EsS0FBSyxHQUFHQTtJQUNmO0lBRUFDLFFBQVE7UUFDTixNQUFNRCxRQUFRLElBQUksQ0FBQ0EsS0FBSyxDQUFDRSxLQUFLLElBQ3hCQyxZQUFZLElB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
|