occam-dom 5.0.14 → 5.1.1
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 +576 -3
- package/lib/index.js +5 -1
- package/lib/node.js +74 -3
- package/lib/transform.js +262 -0
- package/lib/utilities/transform.js +195 -0
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/node.js +4 -4
- package/src/transform.js +184 -0
- package/src/utilities/transform.js +173 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
addNodeAfter: function() {
|
|
13
|
+
return addNodeAfter;
|
|
14
|
+
},
|
|
15
|
+
addNodesAfter: function() {
|
|
16
|
+
return addNodesAfter;
|
|
17
|
+
},
|
|
18
|
+
addTokensAfter: function() {
|
|
19
|
+
return addTokensAfter;
|
|
20
|
+
},
|
|
21
|
+
appendNode: function() {
|
|
22
|
+
return appendNode;
|
|
23
|
+
},
|
|
24
|
+
appendTokens: function() {
|
|
25
|
+
return appendTokens;
|
|
26
|
+
},
|
|
27
|
+
clonedTokensFromNodeAndTokens: function() {
|
|
28
|
+
return clonedTokensFromNodeAndTokens;
|
|
29
|
+
},
|
|
30
|
+
overwriteClonedNodeTokens: function() {
|
|
31
|
+
return overwriteClonedNodeTokens;
|
|
32
|
+
},
|
|
33
|
+
prependNode: function() {
|
|
34
|
+
return prependNode;
|
|
35
|
+
},
|
|
36
|
+
prependTokens: function() {
|
|
37
|
+
return prependTokens;
|
|
38
|
+
},
|
|
39
|
+
removeNode: function() {
|
|
40
|
+
return removeNode;
|
|
41
|
+
},
|
|
42
|
+
removeNodes: function() {
|
|
43
|
+
return removeNodes;
|
|
44
|
+
},
|
|
45
|
+
removeTokens: function() {
|
|
46
|
+
return removeTokens;
|
|
47
|
+
},
|
|
48
|
+
replaceNode: function() {
|
|
49
|
+
return replaceNode;
|
|
50
|
+
},
|
|
51
|
+
replaceNodes: function() {
|
|
52
|
+
return replaceNodes;
|
|
53
|
+
},
|
|
54
|
+
replaceTokens: function() {
|
|
55
|
+
return replaceTokens;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
function _array_like_to_array(arr, len) {
|
|
59
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
60
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
61
|
+
return arr2;
|
|
62
|
+
}
|
|
63
|
+
function _array_without_holes(arr) {
|
|
64
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
65
|
+
}
|
|
66
|
+
function _iterable_to_array(iter) {
|
|
67
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
68
|
+
}
|
|
69
|
+
function _non_iterable_spread() {
|
|
70
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
71
|
+
}
|
|
72
|
+
function _to_consumable_array(arr) {
|
|
73
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
74
|
+
}
|
|
75
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
76
|
+
if (!o) return;
|
|
77
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
78
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
79
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
80
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
81
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
82
|
+
}
|
|
83
|
+
function appendNode(appendedNode, parentNode) {
|
|
84
|
+
var appendedChildNode = appendedNode; ///
|
|
85
|
+
parentNode.appendChildNode(appendedChildNode);
|
|
86
|
+
}
|
|
87
|
+
function prependNode(prependedNode, parentNode) {
|
|
88
|
+
var prependedChildNode = prependedNode; ///
|
|
89
|
+
parentNode.prependChildNode(prependedChildNode);
|
|
90
|
+
}
|
|
91
|
+
function removeNode(removedNode, parentNode) {
|
|
92
|
+
var removedChildNode = removedNode; ///
|
|
93
|
+
parentNode.removeChildNode(removedChildNode);
|
|
94
|
+
}
|
|
95
|
+
function removeNodes(removedNodes, parentNode) {
|
|
96
|
+
var removedChildNodes = removedNodes; ///
|
|
97
|
+
parentNode.removeChildNodes(removedChildNodes);
|
|
98
|
+
}
|
|
99
|
+
function replaceNode(replacementNode, replacedNode, parentNode) {
|
|
100
|
+
var replacedChildNode = replacedNode, replacementChildNode = replacementNode, replacementChildNodes = [
|
|
101
|
+
replacementChildNode
|
|
102
|
+
];
|
|
103
|
+
parentNode.replaceChildNode(replacedChildNode, replacementChildNodes);
|
|
104
|
+
}
|
|
105
|
+
function replaceNodes(replacementNodes, replacedNode, parentNode) {
|
|
106
|
+
var replacedChildNode = replacedNode, replacementChildNodes = replacementNodes; ///
|
|
107
|
+
parentNode.replaceChildNodes(replacedChildNode, replacementChildNodes);
|
|
108
|
+
}
|
|
109
|
+
function addNodeAfter(existingNode, addedNode, parentNode) {
|
|
110
|
+
var childNode = existingNode, index = parentNode.indexOfChildNode(childNode), addedChildNode = addedNode, startIndex = index + 1;
|
|
111
|
+
parentNode.addChildNode(addedChildNode, startIndex);
|
|
112
|
+
}
|
|
113
|
+
function addNodesAfter(existingNode, addedNodes, parentNode) {
|
|
114
|
+
var childNode = existingNode, index = parentNode.indexOfChildNode(childNode), addedChildNodes = addedNodes, startIndex = index + 1;
|
|
115
|
+
parentNode.addChildNodes(addedChildNodes, startIndex);
|
|
116
|
+
}
|
|
117
|
+
function appendTokens(appendedTokens, parentNode, tokens) {
|
|
118
|
+
var _tokens;
|
|
119
|
+
var node = parentNode, lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = lastSignificantTokenIndex + 1, deleteCount = 0;
|
|
120
|
+
(_tokens = tokens).splice.apply(_tokens, [
|
|
121
|
+
start,
|
|
122
|
+
deleteCount
|
|
123
|
+
].concat(_to_consumable_array(appendedTokens)));
|
|
124
|
+
}
|
|
125
|
+
function prependTokens(prependedTokens, parentNode, tokens) {
|
|
126
|
+
var _tokens;
|
|
127
|
+
var node = parentNode, firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, deleteCount = 0;
|
|
128
|
+
(_tokens = tokens).splice.apply(_tokens, [
|
|
129
|
+
start,
|
|
130
|
+
deleteCount
|
|
131
|
+
].concat(_to_consumable_array(prependedTokens)));
|
|
132
|
+
}
|
|
133
|
+
function removeTokens(removedNode, tokens) {
|
|
134
|
+
var node = removedNode, firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1, deleteCount = end - start;
|
|
135
|
+
tokens.splice(start, deleteCount);
|
|
136
|
+
}
|
|
137
|
+
function replaceTokens(replacementTokens, replacedNode, tokens) {
|
|
138
|
+
var _tokens;
|
|
139
|
+
var node = replacedNode, firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1, deleteCount = end - start;
|
|
140
|
+
(_tokens = tokens).splice.apply(_tokens, [
|
|
141
|
+
start,
|
|
142
|
+
deleteCount
|
|
143
|
+
].concat(_to_consumable_array(replacementTokens)));
|
|
144
|
+
}
|
|
145
|
+
function addTokensAfter(existingNode, addedTokens, tokens) {
|
|
146
|
+
var _tokens;
|
|
147
|
+
var node = existingNode, lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = lastSignificantTokenIndex + 1, deleteCount = 0;
|
|
148
|
+
(_tokens = tokens).splice.apply(_tokens, [
|
|
149
|
+
start,
|
|
150
|
+
deleteCount
|
|
151
|
+
].concat(_to_consumable_array(addedTokens)));
|
|
152
|
+
}
|
|
153
|
+
function overwriteClonedNodeTokens(clonedNode, clonedTokens, tokens) {
|
|
154
|
+
var offset = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
|
|
155
|
+
var node = clonedNode; ///
|
|
156
|
+
overwriteNodeTokens(node, clonedTokens, tokens, offset);
|
|
157
|
+
}
|
|
158
|
+
function clonedTokensFromNodeAndTokens(node, tokens) {
|
|
159
|
+
var firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1;
|
|
160
|
+
tokens = tokens.slice(start, end); ///
|
|
161
|
+
var clonedTokens = tokens.map(function(token) {
|
|
162
|
+
var clonedToken = token.clone();
|
|
163
|
+
return clonedToken;
|
|
164
|
+
});
|
|
165
|
+
return clonedTokens;
|
|
166
|
+
}
|
|
167
|
+
function overwriteNodeTokens(node, clonedTokens, tokens, offset) {
|
|
168
|
+
var nodeTerminalNode = node.isTerminalNode();
|
|
169
|
+
if (nodeTerminalNode) {
|
|
170
|
+
var terminalNode = node; ///
|
|
171
|
+
overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset);
|
|
172
|
+
} else {
|
|
173
|
+
var nonTerminalNode = node; ///
|
|
174
|
+
overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset) {
|
|
178
|
+
var index, significantToken;
|
|
179
|
+
significantToken = terminalNode.getSignificantToken();
|
|
180
|
+
if (significantToken !== null) {
|
|
181
|
+
index = tokens.indexOf(significantToken);
|
|
182
|
+
index -= offset;
|
|
183
|
+
var clonedToken = clonedTokens[index];
|
|
184
|
+
significantToken = clonedToken; ///
|
|
185
|
+
terminalNode.setSignificantToken(significantToken);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset) {
|
|
189
|
+
nonTerminalNode.forEachChildNode(function(childNode) {
|
|
190
|
+
var clonedNode = childNode; ///
|
|
191
|
+
overwriteNodeTokens(clonedNode, clonedTokens, tokens, offset);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdHJhbnNmb3JtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kTm9kZShhcHBlbmRlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgYXBwZW5kZWRDaGlsZE5vZGUgPSBhcHBlbmRlZE5vZGU7ICAvLy9cblxuICBwYXJlbnROb2RlLmFwcGVuZENoaWxkTm9kZShhcHBlbmRlZENoaWxkTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwZW5kTm9kZShwcmVwZW5kZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHByZXBlbmRlZENoaWxkTm9kZSA9IHByZXBlbmRlZE5vZGU7ICAvLy9cblxuICBwYXJlbnROb2RlLnByZXBlbmRDaGlsZE5vZGUocHJlcGVuZGVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUocmVtb3ZlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVtb3ZlZENoaWxkTm9kZSA9IHJlbW92ZWROb2RlOyAvLy9cblxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkTm9kZShyZW1vdmVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGVzKHJlbW92ZWROb2RlcywgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZW1vdmVkQ2hpbGROb2RlcyA9IHJlbW92ZWROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb2RlKHJlcGxhY2VtZW50Tm9kZSwgcmVwbGFjZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIHJlcGxhY2VtZW50Q2hpbGROb2RlID0gcmVwbGFjZW1lbnROb2RlLCAvLy9cbiAgICAgICAgcmVwbGFjZW1lbnRDaGlsZE5vZGVzID0gW1xuICAgICAgICAgIHJlcGxhY2VtZW50Q2hpbGROb2RlXG4gICAgICAgIF07XG5cbiAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGROb2RlKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU5vZGVzKHJlcGxhY2VtZW50Tm9kZXMsIHJlcGxhY2VkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZXBsYWNlZENoaWxkTm9kZSA9IHJlcGxhY2VkTm9kZSwgIC8vL1xuICAgICAgICByZXBsYWNlbWVudENoaWxkTm9kZXMgPSByZXBsYWNlbWVudE5vZGVzOyAvLy9cblxuICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTm9kZUFmdGVyKGV4aXN0aW5nTm9kZSwgYWRkZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IGNoaWxkTm9kZSA9IGV4aXN0aW5nTm9kZSwgLy8vXG4gICAgICAgIGluZGV4ID0gcGFyZW50Tm9kZS5pbmRleE9mQ2hpbGROb2RlKGNoaWxkTm9kZSksXG4gICAgICAgIGFkZGVkQ2hpbGROb2RlID0gYWRkZWROb2RlLCAvLy9cbiAgICAgICAgc3RhcnRJbmRleCA9IGluZGV4ICsgMTtcblxuICBwYXJlbnROb2RlLmFkZENoaWxkTm9kZShhZGRlZENoaWxkTm9kZSwgc3RhcnRJbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGROb2Rlc0FmdGVyKGV4aXN0aW5nTm9kZSwgYWRkZWROb2RlcywgcGFyZW50Tm9kZSkge1xuICBjb25zdCBjaGlsZE5vZGUgPSBleGlzdGluZ05vZGUsIC8vL1xuICAgICAgICBpbmRleCA9IHBhcmVudE5vZGUuaW5kZXhPZkNoaWxkTm9kZShjaGlsZE5vZGUpLFxuICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBhZGRlZE5vZGVzLCAvLy9cbiAgICAgICAgc3RhcnRJbmRleCA9IGluZGV4ICsgMTtcblxuICBwYXJlbnROb2RlLmFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFRva2VucyhhcHBlbmRlZFRva2VucywgcGFyZW50Tm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSBwYXJlbnROb2RlLCAvLy9cbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IDA7XG5cbiAgdG9rZW5zLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFwcGVuZGVkVG9rZW5zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBlbmRUb2tlbnMocHJlcGVuZGVkVG9rZW5zLCBwYXJlbnROb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgbm9kZSA9IHBhcmVudE5vZGUsIC8vL1xuICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSAwO1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5wcmVwZW5kZWRUb2tlbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVG9rZW5zKHJlbW92ZWROb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgbm9kZSA9IHJlbW92ZWROb2RlLCAgLy8vXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBlbmQgLSBzdGFydDtcblxuICB0b2tlbnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlVG9rZW5zKHJlcGxhY2VtZW50VG9rZW5zLCByZXBsYWNlZE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBlbmQgLSBzdGFydDtcblxuICB0b2tlbnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4ucmVwbGFjZW1lbnRUb2tlbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVG9rZW5zQWZ0ZXIoZXhpc3RpbmdOb2RlLCBhZGRlZFRva2VucywgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSBleGlzdGluZ05vZGUsICAvLy9cbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IDA7XG5cbiAgdG9rZW5zLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFkZGVkVG9rZW5zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG92ZXJ3cml0ZUNsb25lZE5vZGVUb2tlbnMoY2xvbmVkTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCA9IDApIHtcbiAgY29uc3Qgbm9kZSA9IGNsb25lZE5vZGU7ICAvLy9cblxuICBvdmVyd3JpdGVOb2RlVG9rZW5zKG5vZGUsIGNsb25lZFRva2VucywgdG9rZW5zLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVkVG9rZW5zRnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsICAvLy9cbiAgICAgICAgZW5kID0gbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCArIDE7XG5cbiAgdG9rZW5zID0gdG9rZW5zLnNsaWNlKHN0YXJ0LCBlbmQpOyAgLy8vXG5cbiAgY29uc3QgY2xvbmVkVG9rZW5zID0gdG9rZW5zLm1hcCgodG9rZW4pID0+IHsgIC8vL1xuICAgIGNvbnN0IGNsb25lZFRva2VuID0gdG9rZW4uY2xvbmUoKTtcblxuICAgIHJldHVybiBjbG9uZWRUb2tlbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNsb25lZFRva2Vucztcbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlTm9kZVRva2Vucyhub2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KSB7XG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICBvdmVyd3JpdGVUZXJtaW5hbE5vZGVUb2tlbnModGVybWluYWxOb2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICBvdmVyd3JpdGVOb25UZXJtaW5hbE5vZGVUb2tlbnMobm9uVGVybWluYWxOb2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVUZXJtaW5hbE5vZGVUb2tlbnModGVybWluYWxOb2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KSB7XG4gIGxldCBpbmRleCxcbiAgICAgIHNpZ25pZmljYW50VG9rZW47XG5cbiAgc2lnbmlmaWNhbnRUb2tlbiA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuKCk7XG5cbiAgaWYgKHNpZ25pZmljYW50VG9rZW4gIT09IG51bGwpIHtcbiAgICBpbmRleCA9IHRva2Vucy5pbmRleE9mKHNpZ25pZmljYW50VG9rZW4pO1xuXG4gICAgaW5kZXggLT0gb2Zmc2V0O1xuXG4gICAgY29uc3QgY2xvbmVkVG9rZW4gPSBjbG9uZWRUb2tlbnNbaW5kZXhdO1xuXG4gICAgc2lnbmlmaWNhbnRUb2tlbiA9IGNsb25lZFRva2VuOyAgLy8vXG5cbiAgICB0ZXJtaW5hbE5vZGUuc2V0U2lnbmlmaWNhbnRUb2tlbihzaWduaWZpY2FudFRva2VuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvdmVyd3JpdGVOb25UZXJtaW5hbE5vZGVUb2tlbnMobm9uVGVybWluYWxOb2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KSB7XG4gIG5vblRlcm1pbmFsTm9kZS5mb3JFYWNoQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBjbG9uZWROb2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIG92ZXJ3cml0ZU5vZGVUb2tlbnMoY2xvbmVkTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImFkZE5vZGVBZnRlciIsImFkZE5vZGVzQWZ0ZXIiLCJhZGRUb2tlbnNBZnRlciIsImFwcGVuZE5vZGUiLCJhcHBlbmRUb2tlbnMiLCJjbG9uZWRUb2tlbnNGcm9tTm9kZUFuZFRva2VucyIsIm92ZXJ3cml0ZUNsb25lZE5vZGVUb2tlbnMiLCJwcmVwZW5kTm9kZSIsInByZXBlbmRUb2tlbnMiLCJyZW1vdmVOb2RlIiwicmVtb3ZlTm9kZXMiLCJyZW1vdmVUb2tlbnMiLCJyZXBsYWNlTm9kZSIsInJlcGxhY2VOb2RlcyIsInJlcGxhY2VUb2tlbnMiLCJhcHBlbmRlZE5vZGUiLCJwYXJlbnROb2RlIiwiYXBwZW5kZWRDaGlsZE5vZGUiLCJhcHBlbmRDaGlsZE5vZGUiLCJwcmVwZW5kZWROb2RlIiwicHJlcGVuZGVkQ2hpbGROb2RlIiwicHJlcGVuZENoaWxkTm9kZSIsInJlbW92ZWROb2RlIiwicmVtb3ZlZENoaWxkTm9kZSIsInJlbW92ZUNoaWxkTm9kZSIsInJlbW92ZWROb2RlcyIsInJlbW92ZWRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlcyIsInJlcGxhY2VtZW50Tm9kZSIsInJlcGxhY2VkTm9kZSIsInJlcGxhY2VkQ2hpbGROb2RlIiwicmVwbGFjZW1lbnRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZXMiLCJyZXBsYWNlQ2hpbGROb2RlIiwicmVwbGFjZW1lbnROb2RlcyIsInJlcGxhY2VDaGlsZE5vZGVzIiwiZXhpc3RpbmdOb2RlIiwiYWRkZWROb2RlIiwiY2hpbGROb2RlIiwiaW5kZXgiLCJpbmRleE9mQ2hpbGROb2RlIiwiYWRkZWRDaGlsZE5vZGUiLCJzdGFydEluZGV4IiwiYWRkQ2hpbGROb2RlIiwiYWRkZWROb2RlcyIsImFkZGVkQ2hpbGROb2RlcyIsImFkZENoaWxkTm9kZXMiLCJhcHBlbmRlZFRva2VucyIsInRva2VucyIsIm5vZGUiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJwcmVwZW5kZWRUb2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZW5kIiwicmVwbGFjZW1lbnRUb2tlbnMiLCJhZGRlZFRva2VucyIsImNsb25lZE5vZGUiLCJjbG9uZWRUb2tlbnMiLCJvZmZzZXQiLCJvdmVyd3JpdGVOb2RlVG9rZW5zIiwic2xpY2UiLCJtYXAiLCJ0b2tlbiIsImNsb25lZFRva2VuIiwiY2xvbmUiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJvdmVyd3JpdGVUZXJtaW5hbE5vZGVUb2tlbnMiLCJub25UZXJtaW5hbE5vZGUiLCJvdmVyd3JpdGVOb25UZXJtaW5hbE5vZGVUb2tlbnMiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImluZGV4T2YiLCJzZXRTaWduaWZpY2FudFRva2VuIiwiZm9yRWFjaENoaWxkTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBMkNnQkEsWUFBWTtlQUFaQTs7SUFTQUMsYUFBYTtlQUFiQTs7SUFpREFDLGNBQWM7ZUFBZEE7O0lBbkdBQyxVQUFVO2VBQVZBOztJQTJEQUMsWUFBWTtlQUFaQTs7SUF1REFDLDZCQUE2QjtlQUE3QkE7O0lBTkFDLHlCQUF5QjtlQUF6QkE7O0lBdEdBQyxXQUFX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
|
package/package.json
CHANGED
package/src/index.js
CHANGED
package/src/node.js
CHANGED
|
@@ -78,7 +78,7 @@ export default class Node {
|
|
|
78
78
|
return parseTree;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
static fromNothing(Class) {
|
|
81
|
+
static fromNothing(Class, ...remainingArguments) {
|
|
82
82
|
if (Class === undefined) {
|
|
83
83
|
Class = Node; ///
|
|
84
84
|
}
|
|
@@ -86,12 +86,12 @@ export default class Node {
|
|
|
86
86
|
const outerNode = null,
|
|
87
87
|
parentNode = null,
|
|
88
88
|
childNodes = [],
|
|
89
|
-
node = new Class(outerNode, parentNode, childNodes);
|
|
89
|
+
node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
90
90
|
|
|
91
91
|
return node;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
static fromOuterNode(Class, outerNode) {
|
|
94
|
+
static fromOuterNode(Class, outerNode, ...remainingArguments) {
|
|
95
95
|
if (outerNode === undefined) {
|
|
96
96
|
outerNode = Class; ///
|
|
97
97
|
|
|
@@ -100,7 +100,7 @@ export default class Node {
|
|
|
100
100
|
|
|
101
101
|
const parentNode = null,
|
|
102
102
|
childNodes = [],
|
|
103
|
-
node = new Class(outerNode, parentNode, childNodes);
|
|
103
|
+
node = new Class(outerNode, parentNode, childNodes, ...remainingArguments);
|
|
104
104
|
|
|
105
105
|
return node;
|
|
106
106
|
}
|
package/src/transform.js
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import { appendNode,
|
|
6
|
+
removeNode,
|
|
7
|
+
prependNode,
|
|
8
|
+
replaceNode,
|
|
9
|
+
appendTokens,
|
|
10
|
+
removeTokens,
|
|
11
|
+
replaceTokens,
|
|
12
|
+
addNodesAfter,
|
|
13
|
+
prependTokens,
|
|
14
|
+
addTokensAfter,
|
|
15
|
+
overwriteClonedNodeTokens,
|
|
16
|
+
clonedTokensFromNodeAndTokens, } from "./utilities/transform";
|
|
17
|
+
|
|
18
|
+
const { push } = arrayUtilities;
|
|
19
|
+
|
|
20
|
+
export default class Transform {
|
|
21
|
+
constructor(node, tokens) {
|
|
22
|
+
this.node = node;
|
|
23
|
+
this.tokens = tokens;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getNode() {
|
|
27
|
+
return this.node;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getTokens(tokens = []) {
|
|
31
|
+
push(tokens, this.tokens);
|
|
32
|
+
|
|
33
|
+
return this.tokens;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
contract(Class, descendentNode, ...remainingArguments) {
|
|
37
|
+
if (descendentNode === undefined) {
|
|
38
|
+
descendentNode = Class; ///
|
|
39
|
+
|
|
40
|
+
Class = Transform; ///
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const node = descendentNode, ///
|
|
44
|
+
tokens = this.tokens, ///
|
|
45
|
+
context = { ///
|
|
46
|
+
tokens
|
|
47
|
+
},
|
|
48
|
+
transform = Class.fromNode(node, ...remainingArguments, context);
|
|
49
|
+
|
|
50
|
+
return transform;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
expand(Class, ascendantNode, ...remainingArguments) {
|
|
54
|
+
if (ascendantNode === undefined) {
|
|
55
|
+
ascendantNode = Class;
|
|
56
|
+
|
|
57
|
+
Class = Transform; ///
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const node = ascendantNode, ///
|
|
61
|
+
tokens = this.tokens, ///
|
|
62
|
+
context = {
|
|
63
|
+
tokens
|
|
64
|
+
},
|
|
65
|
+
transform = Class.fromNode(node, ...remainingArguments, context);
|
|
66
|
+
|
|
67
|
+
return transform;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
appendTo(parentNode, context) {
|
|
71
|
+
const { tokens } = context,
|
|
72
|
+
appendedNode = this.node, ///
|
|
73
|
+
appendedTokens = this.tokens; ///
|
|
74
|
+
|
|
75
|
+
appendNode(appendedNode, parentNode);
|
|
76
|
+
|
|
77
|
+
appendTokens(appendedTokens, parentNode, tokens);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
prependTo(parentNode, context) {
|
|
81
|
+
const { tokens } = context,
|
|
82
|
+
prependedNode = this.node, ///
|
|
83
|
+
prependedTokens = this.tokens; ///
|
|
84
|
+
|
|
85
|
+
prependNode(prependedNode, parentNode);
|
|
86
|
+
|
|
87
|
+
prependTokens(prependedTokens, parentNode, tokens);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
addAfter(existingNode, parentNode, context) {
|
|
91
|
+
const { tokens } = context,
|
|
92
|
+
markdownNode = this.node, ///
|
|
93
|
+
removedChildNodes = markdownNode.removeChildNodes(),
|
|
94
|
+
addedTokens = this.tokens, ///
|
|
95
|
+
addedNodes = removedChildNodes; ///
|
|
96
|
+
|
|
97
|
+
addNodesAfter(existingNode, addedNodes, parentNode);
|
|
98
|
+
|
|
99
|
+
addTokensAfter(existingNode, addedTokens, tokens);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
replace(replacedNode, parentNode, context) {
|
|
103
|
+
const { tokens } = context,
|
|
104
|
+
replacementNode = this.node, ///
|
|
105
|
+
replacementTokens = this.tokens; ///
|
|
106
|
+
|
|
107
|
+
replaceNode(replacementNode, replacedNode, parentNode);
|
|
108
|
+
|
|
109
|
+
replaceTokens(replacementTokens, replacedNode, tokens);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
removeFrom(removedNode, parentNode, context) {
|
|
113
|
+
const { tokens } = context;
|
|
114
|
+
|
|
115
|
+
removeTokens(removedNode, tokens);
|
|
116
|
+
|
|
117
|
+
removeNode(removedNode, parentNode);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
clone(...remainingArguments) {
|
|
121
|
+
const clonedNode = this.node.clone(),
|
|
122
|
+
clonedTokens = clonedTokensFromNodeAndTokens(this.node, this.tokens);
|
|
123
|
+
|
|
124
|
+
overwriteClonedNodeTokens(clonedNode, clonedTokens, this.tokens);
|
|
125
|
+
|
|
126
|
+
const Class = this.constructor, ///
|
|
127
|
+
node = clonedNode, ///
|
|
128
|
+
tokens = clonedTokens, ///
|
|
129
|
+
transform = new Class(node, tokens, ...remainingArguments);
|
|
130
|
+
|
|
131
|
+
return transform
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
static fromNode(Class, node, ...remainingArguments) {
|
|
135
|
+
let context = remainingArguments.pop();
|
|
136
|
+
|
|
137
|
+
if (context === undefined) {
|
|
138
|
+
context = node; ///
|
|
139
|
+
|
|
140
|
+
node = Class; ///
|
|
141
|
+
|
|
142
|
+
Class = Transform; ///
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
let { tokens } = context;
|
|
146
|
+
|
|
147
|
+
const firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens),
|
|
148
|
+
clonedNode = node.clone();
|
|
149
|
+
|
|
150
|
+
let clonedTokens;
|
|
151
|
+
|
|
152
|
+
if (firstSignificantTokenIndex === null) {
|
|
153
|
+
clonedTokens = [];
|
|
154
|
+
} else {
|
|
155
|
+
const offset = firstSignificantTokenIndex; ///
|
|
156
|
+
|
|
157
|
+
clonedTokens = clonedTokensFromNodeAndTokens(node, tokens);
|
|
158
|
+
|
|
159
|
+
overwriteClonedNodeTokens(clonedNode, clonedTokens, tokens, offset);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
node = clonedNode; ///
|
|
163
|
+
|
|
164
|
+
tokens = clonedTokens; ///
|
|
165
|
+
|
|
166
|
+
const transform = new Class(node, tokens, ...remainingArguments);
|
|
167
|
+
|
|
168
|
+
return transform;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
static fromNodeAndTokens(Class, node, tokens, ...remainingArguments) {
|
|
172
|
+
if (tokens === undefined) {
|
|
173
|
+
tokens = node; ///
|
|
174
|
+
|
|
175
|
+
node = Class; ///
|
|
176
|
+
|
|
177
|
+
Class = Transform; ///
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const transform = new Class(node, tokens, ...remainingArguments);
|
|
181
|
+
|
|
182
|
+
return transform;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export function appendNode(appendedNode, parentNode) {
|
|
4
|
+
const appendedChildNode = appendedNode; ///
|
|
5
|
+
|
|
6
|
+
parentNode.appendChildNode(appendedChildNode);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function prependNode(prependedNode, parentNode) {
|
|
10
|
+
const prependedChildNode = prependedNode; ///
|
|
11
|
+
|
|
12
|
+
parentNode.prependChildNode(prependedChildNode);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function removeNode(removedNode, parentNode) {
|
|
16
|
+
const removedChildNode = removedNode; ///
|
|
17
|
+
|
|
18
|
+
parentNode.removeChildNode(removedChildNode);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function removeNodes(removedNodes, parentNode) {
|
|
22
|
+
const removedChildNodes = removedNodes; ///
|
|
23
|
+
|
|
24
|
+
parentNode.removeChildNodes(removedChildNodes);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function replaceNode(replacementNode, replacedNode, parentNode) {
|
|
28
|
+
const replacedChildNode = replacedNode, ///
|
|
29
|
+
replacementChildNode = replacementNode, ///
|
|
30
|
+
replacementChildNodes = [
|
|
31
|
+
replacementChildNode
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
parentNode.replaceChildNode(replacedChildNode, replacementChildNodes);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function replaceNodes(replacementNodes, replacedNode, parentNode) {
|
|
38
|
+
const replacedChildNode = replacedNode, ///
|
|
39
|
+
replacementChildNodes = replacementNodes; ///
|
|
40
|
+
|
|
41
|
+
parentNode.replaceChildNodes(replacedChildNode, replacementChildNodes);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function addNodeAfter(existingNode, addedNode, parentNode) {
|
|
45
|
+
const childNode = existingNode, ///
|
|
46
|
+
index = parentNode.indexOfChildNode(childNode),
|
|
47
|
+
addedChildNode = addedNode, ///
|
|
48
|
+
startIndex = index + 1;
|
|
49
|
+
|
|
50
|
+
parentNode.addChildNode(addedChildNode, startIndex);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function addNodesAfter(existingNode, addedNodes, parentNode) {
|
|
54
|
+
const childNode = existingNode, ///
|
|
55
|
+
index = parentNode.indexOfChildNode(childNode),
|
|
56
|
+
addedChildNodes = addedNodes, ///
|
|
57
|
+
startIndex = index + 1;
|
|
58
|
+
|
|
59
|
+
parentNode.addChildNodes(addedChildNodes, startIndex);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function appendTokens(appendedTokens, parentNode, tokens) {
|
|
63
|
+
const node = parentNode, ///
|
|
64
|
+
lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens),
|
|
65
|
+
start = lastSignificantTokenIndex + 1,
|
|
66
|
+
deleteCount = 0;
|
|
67
|
+
|
|
68
|
+
tokens.splice(start, deleteCount, ...appendedTokens);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function prependTokens(prependedTokens, parentNode, tokens) {
|
|
72
|
+
const node = parentNode, ///
|
|
73
|
+
firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens),
|
|
74
|
+
start = firstSignificantTokenIndex,
|
|
75
|
+
deleteCount = 0;
|
|
76
|
+
|
|
77
|
+
tokens.splice(start, deleteCount, ...prependedTokens);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function removeTokens(removedNode, tokens) {
|
|
81
|
+
const node = removedNode, ///
|
|
82
|
+
firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens),
|
|
83
|
+
lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens),
|
|
84
|
+
start = firstSignificantTokenIndex, ///
|
|
85
|
+
end = lastSignificantTokenIndex + 1,
|
|
86
|
+
deleteCount = end - start;
|
|
87
|
+
|
|
88
|
+
tokens.splice(start, deleteCount);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function replaceTokens(replacementTokens, replacedNode, tokens) {
|
|
92
|
+
const node = replacedNode, ///
|
|
93
|
+
firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens),
|
|
94
|
+
lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens),
|
|
95
|
+
start = firstSignificantTokenIndex, ///
|
|
96
|
+
end = lastSignificantTokenIndex + 1,
|
|
97
|
+
deleteCount = end - start;
|
|
98
|
+
|
|
99
|
+
tokens.splice(start, deleteCount, ...replacementTokens);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function addTokensAfter(existingNode, addedTokens, tokens) {
|
|
103
|
+
const node = existingNode, ///
|
|
104
|
+
lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens),
|
|
105
|
+
start = lastSignificantTokenIndex + 1,
|
|
106
|
+
deleteCount = 0;
|
|
107
|
+
|
|
108
|
+
tokens.splice(start, deleteCount, ...addedTokens);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function overwriteClonedNodeTokens(clonedNode, clonedTokens, tokens, offset = 0) {
|
|
112
|
+
const node = clonedNode; ///
|
|
113
|
+
|
|
114
|
+
overwriteNodeTokens(node, clonedTokens, tokens, offset);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export function clonedTokensFromNodeAndTokens(node, tokens) {
|
|
118
|
+
const firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens),
|
|
119
|
+
lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens),
|
|
120
|
+
start = firstSignificantTokenIndex, ///
|
|
121
|
+
end = lastSignificantTokenIndex + 1;
|
|
122
|
+
|
|
123
|
+
tokens = tokens.slice(start, end); ///
|
|
124
|
+
|
|
125
|
+
const clonedTokens = tokens.map((token) => { ///
|
|
126
|
+
const clonedToken = token.clone();
|
|
127
|
+
|
|
128
|
+
return clonedToken;
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
return clonedTokens;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function overwriteNodeTokens(node, clonedTokens, tokens, offset) {
|
|
135
|
+
const nodeTerminalNode = node.isTerminalNode();
|
|
136
|
+
|
|
137
|
+
if (nodeTerminalNode) {
|
|
138
|
+
const terminalNode = node; ///
|
|
139
|
+
|
|
140
|
+
overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset);
|
|
141
|
+
} else {
|
|
142
|
+
const nonTerminalNode = node; ///
|
|
143
|
+
|
|
144
|
+
overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset) {
|
|
149
|
+
let index,
|
|
150
|
+
significantToken;
|
|
151
|
+
|
|
152
|
+
significantToken = terminalNode.getSignificantToken();
|
|
153
|
+
|
|
154
|
+
if (significantToken !== null) {
|
|
155
|
+
index = tokens.indexOf(significantToken);
|
|
156
|
+
|
|
157
|
+
index -= offset;
|
|
158
|
+
|
|
159
|
+
const clonedToken = clonedTokens[index];
|
|
160
|
+
|
|
161
|
+
significantToken = clonedToken; ///
|
|
162
|
+
|
|
163
|
+
terminalNode.setSignificantToken(significantToken);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset) {
|
|
168
|
+
nonTerminalNode.forEachChildNode((childNode) => {
|
|
169
|
+
const clonedNode = childNode; ///
|
|
170
|
+
|
|
171
|
+
overwriteNodeTokens(clonedNode, clonedTokens, tokens, offset);
|
|
172
|
+
});
|
|
173
|
+
}
|