highmark-markdown 0.0.383 → 0.0.388
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 +2972 -865
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/elementMap.js +4 -4
- package/lib/example/constants.js +6 -2
- package/lib/example/view.js +5 -4
- package/lib/markdown/bnf.js +2 -2
- package/lib/mixins/node.js +6 -1
- package/lib/node/markdown/contentsItem.js +8 -30
- package/lib/node/markdown/contentsLink.js +9 -30
- package/lib/node/markdown/contentsList.js +8 -33
- package/lib/node/markdown/directive/embee.js +8 -8
- package/lib/node/markdown/division.js +90 -103
- package/lib/node/markdown/{footnoteItem.js → footnotesItem.js} +12 -12
- package/lib/node/markdown/footnotesList.js +9 -47
- package/lib/node/markdown/subDivision.js +2 -3
- package/lib/node/markdown.js +25 -1
- package/lib/nodeMap.js +6 -3
- package/lib/replacement/contentsItem.js +145 -0
- package/lib/replacement/contentsLink.js +157 -0
- package/lib/replacement/contentsList.js +212 -0
- package/lib/replacement/footnote.js +122 -0
- package/lib/replacement/footnotesItem.js +140 -0
- package/lib/replacement/footnotesList.js +189 -0
- package/lib/replacement/imported.js +151 -0
- package/lib/replacement/line.js +127 -0
- package/lib/replacement/subDivision/contentsDirective.js +126 -0
- package/lib/replacement/subDivision/footnote.js +126 -0
- package/lib/replacement/subDivision/footnotesDirective.js +126 -0
- package/lib/replacement/subDivision/pageNumberDirective.js +126 -0
- package/lib/replacement/subDivision.js +175 -0
- package/lib/replacement.js +139 -46
- package/lib/ruleNames.js +6 -6
- package/lib/utilities/markdown.js +8 -8
- package/lib/utilities/node.js +1 -72
- package/lib/utilities/replacement.js +104 -0
- package/package.json +1 -1
- package/src/defaultMarkdownStyle.js +20 -1
- package/src/elementMap.js +5 -5
- package/src/example/constants.js +2 -1
- package/src/example/view.js +13 -12
- package/src/markdown/bnf.js +23 -9
- package/src/mixins/node.js +10 -0
- package/src/node/markdown/contentsItem.js +7 -38
- package/src/node/markdown/contentsLink.js +8 -41
- package/src/node/markdown/contentsList.js +7 -39
- package/src/node/markdown/directive/embee.js +9 -9
- package/src/node/markdown/division.js +90 -158
- package/src/node/markdown/{footnoteItem.js → footnotesItem.js} +5 -5
- package/src/node/markdown/footnotesList.js +10 -78
- package/src/node/markdown/subDivision.js +1 -5
- package/src/node/markdown.js +28 -0
- package/src/nodeMap.js +12 -3
- package/src/replacement/contentsItem.js +49 -0
- package/src/replacement/contentsLink.js +29 -0
- package/src/replacement/contentsList.js +111 -0
- package/src/replacement/footnote.js +16 -0
- package/src/replacement/footnotesItem.js +38 -0
- package/src/replacement/footnotesList.js +73 -0
- package/src/replacement/imported.js +13 -0
- package/src/replacement/line.js +14 -0
- package/src/replacement/subDivision/contentsDirective.js +20 -0
- package/src/replacement/subDivision/footnote.js +20 -0
- package/src/replacement/subDivision/footnotesDirective.js +20 -0
- package/src/replacement/subDivision/pageNumberDirective.js +20 -0
- package/src/replacement/subDivision.js +42 -0
- package/src/replacement.js +108 -53
- package/src/ruleNames.js +2 -2
- package/src/utilities/markdown.js +9 -9
- package/src/utilities/node.js +0 -48
- package/src/utilities/replacement.js +66 -0
package/src/replacement.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
3
5
|
import { leadingIndexFromNodeAndTokens, trailingIndexFromNodeAndTokens } from "./utilities/node";
|
|
6
|
+
import { removeNode, appendNode, removeTokens, appendTokens, replaceNode, replaceNodes, replaceTokens } from "./utilities/replacement";
|
|
7
|
+
|
|
8
|
+
const { push } = arrayUtilities;
|
|
4
9
|
|
|
5
10
|
export default class Replacement {
|
|
6
11
|
constructor(node, tokens) {
|
|
@@ -12,110 +17,156 @@ export default class Replacement {
|
|
|
12
17
|
return this.node;
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
getTokens() {
|
|
20
|
+
getTokens(tokens = []) {
|
|
21
|
+
push(tokens, this.tokens);
|
|
22
|
+
|
|
16
23
|
return this.tokens;
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
getChildNodes() { return this.node.getChildNodes(); }
|
|
20
27
|
|
|
21
|
-
contract(descendentNode) {
|
|
28
|
+
contract(Class, descendentNode) {
|
|
29
|
+
if (descendentNode === undefined) {
|
|
30
|
+
descendentNode = Class; ///
|
|
31
|
+
|
|
32
|
+
Class = Replacement; ///
|
|
33
|
+
}
|
|
34
|
+
|
|
22
35
|
const node = descendentNode, ///
|
|
23
36
|
tokens = this.tokens, ///
|
|
24
37
|
context = { ///
|
|
25
38
|
tokens
|
|
26
39
|
},
|
|
27
|
-
replacement =
|
|
40
|
+
replacement = Class.fromNode(node, context); ///
|
|
28
41
|
|
|
29
42
|
return replacement;
|
|
30
43
|
}
|
|
31
44
|
|
|
32
|
-
expand(ascendantNode) {
|
|
45
|
+
expand(Class, ascendantNode) {
|
|
46
|
+
if (ascendantNode === undefined) {
|
|
47
|
+
ascendantNode = Class;
|
|
48
|
+
|
|
49
|
+
Class = Replacement; ///
|
|
50
|
+
}
|
|
51
|
+
|
|
33
52
|
const node = ascendantNode, ///
|
|
34
53
|
tokens = this.tokens, ///
|
|
35
54
|
context = {
|
|
36
55
|
tokens
|
|
37
56
|
},
|
|
38
|
-
replacement =
|
|
57
|
+
replacement = Class.fromNode(node, context); ///
|
|
39
58
|
|
|
40
59
|
return replacement;
|
|
41
60
|
}
|
|
42
61
|
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
62
|
+
appendTo(parentNode, context) {
|
|
63
|
+
const { tokens } = context,
|
|
64
|
+
replacementNode = this.node, ///
|
|
65
|
+
replacementTokens = this.tokens; ///
|
|
46
66
|
|
|
47
|
-
|
|
67
|
+
appendNode(replacementNode, parentNode);
|
|
48
68
|
|
|
49
|
-
|
|
50
|
-
|
|
69
|
+
appendTokens(replacementTokens, parentNode, tokens);
|
|
70
|
+
}
|
|
51
71
|
|
|
52
|
-
|
|
72
|
+
replace(replacedNode, parentNode, context) {
|
|
73
|
+
const { tokens } = context,
|
|
74
|
+
replacementNode = this.node, ///
|
|
75
|
+
replacementTokens = this.tokens; ///
|
|
76
|
+
|
|
77
|
+
replaceNode(replacementNode, replacedNode, parentNode);
|
|
78
|
+
|
|
79
|
+
replaceTokens(replacementTokens, replacedNode, tokens);
|
|
53
80
|
}
|
|
54
81
|
|
|
55
|
-
|
|
82
|
+
replaceEx(replacedNode, parentNode, context) {
|
|
56
83
|
const { tokens } = context,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
deleteCount = 0;
|
|
65
|
-
|
|
66
|
-
markdownNode.appendChildNode(childNode);
|
|
67
|
-
|
|
68
|
-
tokens.splice(start, deleteCount, ...replacementTokens);
|
|
84
|
+
replacementChildNodes = this.getChildNodes(), ///
|
|
85
|
+
replacementTokens = this.tokens, ///
|
|
86
|
+
replacementNodes = replacementChildNodes; ///
|
|
87
|
+
|
|
88
|
+
replaceNodes(replacementNodes, replacedNode, parentNode);
|
|
89
|
+
|
|
90
|
+
replaceTokens(replacementTokens, replacedNode, tokens);
|
|
69
91
|
}
|
|
70
92
|
|
|
71
|
-
|
|
93
|
+
removeFrom(removedNode, parentNode, context) {
|
|
94
|
+
const { tokens } = context;
|
|
95
|
+
|
|
96
|
+
removeTokens(removedNode, tokens);
|
|
97
|
+
|
|
98
|
+
removeNode(removedNode, parentNode);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
clone(...remainingArguments) {
|
|
102
|
+
const node = this.node.clone(),
|
|
103
|
+
clonedTokens = clonedTokensFromNodeAndTokens(node, this.tokens);
|
|
104
|
+
|
|
105
|
+
overwriteNodeTokens(node, clonedTokens, this.tokens);
|
|
106
|
+
|
|
107
|
+
const Class = this.constructor,
|
|
108
|
+
tokens = clonedTokens, ///
|
|
109
|
+
replacement = new Class(node, tokens, ...remainingArguments);
|
|
110
|
+
|
|
111
|
+
return replacement
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static fromNode(Class, node, context, ...remainingArguments) {
|
|
115
|
+
if (context === undefined) {
|
|
116
|
+
context = node; ///
|
|
117
|
+
|
|
118
|
+
node = Class; ///
|
|
119
|
+
|
|
120
|
+
Class = Replacement; ///
|
|
121
|
+
}
|
|
122
|
+
|
|
72
123
|
let { tokens } = context;
|
|
73
124
|
|
|
74
|
-
const
|
|
125
|
+
const clonedTokens = clonedTokensFromNodeAndTokens(node, tokens),
|
|
75
126
|
leadingIndex = leadingIndexFromNodeAndTokens(node, tokens),
|
|
76
127
|
offset = leadingIndex; ///
|
|
77
128
|
|
|
78
129
|
node = node.clone(); ///
|
|
79
130
|
|
|
80
|
-
|
|
131
|
+
overwriteNodeTokens(node, clonedTokens, tokens, offset);
|
|
81
132
|
|
|
82
|
-
tokens =
|
|
133
|
+
tokens = clonedTokens; ///
|
|
83
134
|
|
|
84
|
-
const replacement = new
|
|
135
|
+
const replacement = new Class(node, tokens, ...remainingArguments);
|
|
85
136
|
|
|
86
137
|
return replacement;
|
|
87
138
|
}
|
|
88
139
|
|
|
89
|
-
static fromNodeAndTokens(node, tokens) {
|
|
90
|
-
|
|
140
|
+
static fromNodeAndTokens(Class, node, tokens, ...remainingArguments) {
|
|
141
|
+
if (tokens === undefined) {
|
|
142
|
+
tokens = node; ///
|
|
143
|
+
|
|
144
|
+
node = Class; ///
|
|
145
|
+
|
|
146
|
+
Class = Replacement; ///
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const replacement = new Class(node, tokens, ...remainingArguments);
|
|
91
150
|
|
|
92
151
|
return replacement;
|
|
93
152
|
}
|
|
94
153
|
}
|
|
95
154
|
|
|
96
|
-
function
|
|
155
|
+
function overwriteNodeTokens(node, clonedTokens, tokens, offset = 0) {
|
|
97
156
|
const nodeTerminalNode = node.isTerminalNode();
|
|
98
157
|
|
|
99
158
|
if (nodeTerminalNode) {
|
|
100
159
|
const terminalNode = node; ///
|
|
101
160
|
|
|
102
|
-
|
|
161
|
+
overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset);
|
|
103
162
|
} else {
|
|
104
163
|
const nonTerminalNode = node; ///
|
|
105
164
|
|
|
106
|
-
|
|
165
|
+
overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset);
|
|
107
166
|
}
|
|
108
167
|
}
|
|
109
168
|
|
|
110
|
-
function
|
|
111
|
-
childNodes.forEach((childNode) => {
|
|
112
|
-
const node = childNode; ///
|
|
113
|
-
|
|
114
|
-
replaceNodeTokens(node, replacementTokens, tokens, offset);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function replaceTerminalNodeTokens(terminalNode, replacementTokens, tokens, offset) {
|
|
169
|
+
function overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset) {
|
|
119
170
|
let index,
|
|
120
171
|
significantToken;
|
|
121
172
|
|
|
@@ -126,21 +177,25 @@ function replaceTerminalNodeTokens(terminalNode, replacementTokens, tokens, offs
|
|
|
126
177
|
|
|
127
178
|
index -= offset;
|
|
128
179
|
|
|
129
|
-
const
|
|
180
|
+
const clonedToken = clonedTokens[index];
|
|
130
181
|
|
|
131
|
-
significantToken =
|
|
182
|
+
significantToken = clonedToken; ///
|
|
132
183
|
|
|
133
184
|
terminalNode.setSignificantToken(significantToken);
|
|
134
185
|
}
|
|
135
186
|
}
|
|
136
187
|
|
|
137
|
-
function
|
|
188
|
+
function overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset) {
|
|
138
189
|
const childNodes = nonTerminalNode.getChildNodes();
|
|
139
190
|
|
|
140
|
-
|
|
191
|
+
childNodes.forEach((childNode) => {
|
|
192
|
+
const node = childNode; ///
|
|
193
|
+
|
|
194
|
+
overwriteNodeTokens(node, clonedTokens, tokens, offset);
|
|
195
|
+
});
|
|
141
196
|
}
|
|
142
197
|
|
|
143
|
-
function
|
|
198
|
+
function clonedTokensFromNodeAndTokens(node, tokens) {
|
|
144
199
|
const leadingIndex = leadingIndexFromNodeAndTokens(node, tokens),
|
|
145
200
|
trailingIndex = trailingIndexFromNodeAndTokens(node, tokens),
|
|
146
201
|
start = leadingIndex, ///
|
|
@@ -148,11 +203,11 @@ function replacementTokensFromNodeAndTokens(node, tokens) {
|
|
|
148
203
|
|
|
149
204
|
tokens = tokens.slice(start, end); ///
|
|
150
205
|
|
|
151
|
-
const
|
|
152
|
-
const
|
|
206
|
+
const clonedTokens = tokens.map((token) => { ///
|
|
207
|
+
const clonedToken = token.clone();
|
|
153
208
|
|
|
154
|
-
return
|
|
209
|
+
return clonedToken;
|
|
155
210
|
});
|
|
156
211
|
|
|
157
|
-
return
|
|
212
|
+
return clonedTokens;
|
|
158
213
|
}
|
package/src/ruleNames.js
CHANGED
|
@@ -28,7 +28,7 @@ export const BLOCK_LISTING_RULE_NAME = "blockListing";
|
|
|
28
28
|
export const CONTENTS_LINK_RULE_NAME = "contentsLink";
|
|
29
29
|
export const CONTENTS_ITEM_RULE_NAME = "contentsItem";
|
|
30
30
|
export const CONTENTS_LIST_RULE_NAME = "contentsList";
|
|
31
|
-
export const
|
|
31
|
+
export const FOOTNOTES_ITEM_RULE_NAME = "footnotesItem";
|
|
32
32
|
export const TABLE_HEAD_ROW_RULE_NAME = "tableHeadRow";
|
|
33
33
|
export const TABLE_BODY_ROW_RULE_NAME = "tableBodyRow";
|
|
34
34
|
export const INLINE_LISTING_RULE_NAME = "inlineListing";
|
|
@@ -84,7 +84,7 @@ const ruleNames = {
|
|
|
84
84
|
CONTENTS_LINK_RULE_NAME,
|
|
85
85
|
CONTENTS_ITEM_RULE_NAME,
|
|
86
86
|
CONTENTS_LIST_RULE_NAME,
|
|
87
|
-
|
|
87
|
+
FOOTNOTES_ITEM_RULE_NAME,
|
|
88
88
|
TABLE_HEAD_ROW_RULE_NAME,
|
|
89
89
|
TABLE_BODY_ROW_RULE_NAME,
|
|
90
90
|
INLINE_LISTING_RULE_NAME,
|
|
@@ -2,14 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
const { clear,
|
|
5
|
+
const { clear, push } = arrayUtilities;
|
|
6
6
|
|
|
7
7
|
export function postprocess(divisionMarkdownNode, context) {
|
|
8
|
-
const divisionMarkdownNodes =
|
|
9
|
-
divisionMarkdownNode
|
|
10
|
-
];
|
|
11
|
-
|
|
12
|
-
resolveIncludes(divisionMarkdownNodes, context);
|
|
8
|
+
const divisionMarkdownNodes = resolveIncludes(divisionMarkdownNode, context);
|
|
13
9
|
|
|
14
10
|
resolveEmbeddings(divisionMarkdownNodes, context);
|
|
15
11
|
|
|
@@ -30,9 +26,13 @@ function createContents(divisionMarkdownNodes, context) {
|
|
|
30
26
|
});
|
|
31
27
|
}
|
|
32
28
|
|
|
33
|
-
function resolveIncludes(
|
|
34
|
-
const
|
|
35
|
-
|
|
29
|
+
function resolveIncludes(divisionMarkdownNode, context) {
|
|
30
|
+
const divisionMarkdownNodes = [],
|
|
31
|
+
divisionMarkdownNodeIgnored = divisionMarkdownNode.isIgnored();
|
|
32
|
+
|
|
33
|
+
if (!divisionMarkdownNodeIgnored) {
|
|
34
|
+
divisionMarkdownNodes.push(divisionMarkdownNode);
|
|
35
|
+
}
|
|
36
36
|
|
|
37
37
|
Object.assign(context, {
|
|
38
38
|
divisionMarkdownNodes
|
package/src/utilities/node.js
CHANGED
|
@@ -4,54 +4,6 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
const { forwardsSome, backwardsSome } = arrayUtilities;
|
|
6
6
|
|
|
7
|
-
export function removeNode(removedNode, parentNode) {
|
|
8
|
-
const removedChildNode = removedNode; ///
|
|
9
|
-
|
|
10
|
-
parentNode.removeChildNode(removedChildNode);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function removeNodes(removedNodes, parentNode) {
|
|
14
|
-
const removedChildNodes = removedNodes; ///
|
|
15
|
-
|
|
16
|
-
parentNode.removeChildNodes(removedChildNodes);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function removeTokens(removedNode, tokens) {
|
|
20
|
-
const nonTerminalNode = removedNode, ///
|
|
21
|
-
leadingIndex = leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
|
|
22
|
-
trailingIndex = trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
|
|
23
|
-
start = leadingIndex, ///
|
|
24
|
-
end = trailingIndex + 1,
|
|
25
|
-
deleteCount = end - start;
|
|
26
|
-
|
|
27
|
-
tokens.splice(start, deleteCount);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function replaceNode(replacementNode, replacedNode, parentNode) {
|
|
31
|
-
const replacedChildNode = replacedNode, ///
|
|
32
|
-
replacementChildNode = replacementNode; ///
|
|
33
|
-
|
|
34
|
-
parentNode.replaceChildNode(replacedChildNode, replacementChildNode);
|
|
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 replaceTokens(replacementTokens, replacedNode, tokens) {
|
|
45
|
-
const nonTerminalNode = replacedNode, ///
|
|
46
|
-
leadingIndex = leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
|
|
47
|
-
trailingIndex = trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens),
|
|
48
|
-
start = leadingIndex, ///
|
|
49
|
-
end = trailingIndex + 1,
|
|
50
|
-
deleteCount = end - start;
|
|
51
|
-
|
|
52
|
-
tokens.splice(start, deleteCount, ...replacementTokens);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
7
|
export function leadingIndexFromNodeAndTokens(node, tokens) {
|
|
56
8
|
let leadingIndex;
|
|
57
9
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { leadingIndexFromNodeAndTokens, trailingIndexFromNodeAndTokens } from "../utilities/node";
|
|
4
|
+
|
|
5
|
+
export function appendNode(replacementNode, parentNode) {
|
|
6
|
+
const childNode = replacementNode; ///
|
|
7
|
+
|
|
8
|
+
parentNode.appendChildNode(childNode);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function removeNode(removedNode, parentNode) {
|
|
12
|
+
const removedChildNode = removedNode; ///
|
|
13
|
+
|
|
14
|
+
parentNode.removeChildNode(removedChildNode);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function removeNodes(removedNodes, parentNode) {
|
|
18
|
+
const removedChildNodes = removedNodes; ///
|
|
19
|
+
|
|
20
|
+
parentNode.removeChildNodes(removedChildNodes);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function replaceNode(replacementNode, replacedNode, parentNode) {
|
|
24
|
+
const replacedChildNode = replacedNode, ///
|
|
25
|
+
replacementChildNode = replacementNode; ///
|
|
26
|
+
|
|
27
|
+
parentNode.replaceChildNode(replacedChildNode, replacementChildNode);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function replaceNodes(replacementNodes, replacedNode, parentNode) {
|
|
31
|
+
const replacedChildNode = replacedNode, ///
|
|
32
|
+
replacementChildNodes = replacementNodes; ///
|
|
33
|
+
|
|
34
|
+
parentNode.replaceChildNodes(replacedChildNode, replacementChildNodes);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function appendTokens(replacementTokens, parentNode, tokens) {
|
|
38
|
+
const node = parentNode, ///
|
|
39
|
+
trailingIndex = trailingIndexFromNodeAndTokens(node, tokens),
|
|
40
|
+
start = trailingIndex + 1,
|
|
41
|
+
deleteCount = 0;
|
|
42
|
+
|
|
43
|
+
tokens.splice(start, deleteCount, ...replacementTokens);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function removeTokens(removedNode, tokens) {
|
|
47
|
+
const node = removedNode, ///
|
|
48
|
+
leadingIndex = leadingIndexFromNodeAndTokens(node, tokens),
|
|
49
|
+
trailingIndex = trailingIndexFromNodeAndTokens(node, tokens),
|
|
50
|
+
start = leadingIndex, ///
|
|
51
|
+
end = trailingIndex + 1,
|
|
52
|
+
deleteCount = end - start;
|
|
53
|
+
|
|
54
|
+
tokens.splice(start, deleteCount);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function replaceTokens(replacementTokens, replacedNode, tokens) {
|
|
58
|
+
const node = replacedNode, ///
|
|
59
|
+
leadingIndex = leadingIndexFromNodeAndTokens(node, tokens),
|
|
60
|
+
trailingIndex = trailingIndexFromNodeAndTokens(node, tokens),
|
|
61
|
+
start = leadingIndex, ///
|
|
62
|
+
end = trailingIndex + 1,
|
|
63
|
+
deleteCount = end - start;
|
|
64
|
+
|
|
65
|
+
tokens.splice(start, deleteCount, ...replacementTokens);
|
|
66
|
+
}
|