highmark-markdown 0.0.405 → 0.0.406
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 +1527 -728
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/example/constants.js +7 -11
- package/lib/example/importer.js +56 -0
- package/lib/example/view/textarea/css.js +2 -2
- package/lib/example/view.js +50 -16
- package/lib/example.js +2 -2
- package/lib/index.js +9 -9
- package/lib/markdown/bnf.js +2 -2
- package/lib/mixins/node.js +42 -6
- package/lib/node/markdown/contentsLink.js +2 -2
- package/lib/node/markdown/contentsList.js +2 -2
- package/lib/node/markdown/directive/embee.js +15 -18
- package/lib/node/markdown/directive/include.js +18 -23
- package/lib/node/markdown/directives.js +13 -62
- package/lib/node/markdown/division.js +63 -54
- package/lib/node/markdown/footnotesList.js +2 -9
- package/lib/node/markdown/heading.js +3 -3
- package/lib/node/markdown/plainText.js +10 -2
- package/lib/node/markdown/subDivision.js +24 -8
- package/lib/node/markdown/tableCell.js +4 -5
- package/lib/node/markdown.js +24 -60
- package/lib/replacement/contentsItem.js +9 -7
- package/lib/replacement/contentsLink.js +2 -31
- package/lib/replacement/contentsList.js +4 -10
- package/lib/replacement/embedDirective.js +163 -0
- package/lib/replacement/footnote.js +81 -5
- package/lib/replacement/footnotesItem.js +13 -17
- package/lib/replacement/footnotesList.js +23 -22
- package/lib/replacement/includeDirective.js +176 -0
- package/lib/replacement/line.js +9 -7
- package/lib/replacement/subDivision/embedDirectives.js +152 -0
- package/lib/replacement/subDivision/footnote.js +10 -2
- package/lib/replacement/subDivision/footnotesDirective.js +33 -2
- package/lib/replacement/subDivision/includeDirectives.js +184 -0
- package/lib/replacement/subDivision.js +55 -12
- package/lib/replacement.js +28 -6
- package/lib/utilities/childNodes.js +4 -17
- package/lib/utilities/footnotes.js +9 -6
- package/lib/utilities/processing.js +83 -0
- package/lib/utilities/query.js +2 -2
- package/lib/utilities/replacement.js +31 -6
- package/package.json +1 -1
- package/src/defaultMarkdownStyle.js +0 -1
- package/src/example/constants.js +3 -4
- package/src/example/importer.js +115 -0
- package/src/example/view/textarea/css.js +1 -1
- package/src/example/view.js +9 -40
- package/src/example.js +2 -2
- package/src/index.js +1 -1
- package/src/markdown/bnf.js +3 -1
- package/src/mixins/node.js +54 -5
- package/src/node/markdown/contentsLink.js +1 -2
- package/src/node/markdown/contentsList.js +1 -1
- package/src/node/markdown/directive/embee.js +15 -18
- package/src/node/markdown/directive/include.js +20 -28
- package/src/node/markdown/directives.js +15 -52
- package/src/node/markdown/division.js +74 -69
- package/src/node/markdown/footnotesList.js +2 -8
- package/src/node/markdown/heading.js +2 -2
- package/src/node/markdown/plainText.js +6 -0
- package/src/node/markdown/subDivision.js +24 -7
- package/src/node/markdown/tableCell.js +4 -5
- package/src/node/markdown.js +15 -70
- package/src/replacement/contentsItem.js +7 -2
- package/src/replacement/contentsLink.js +1 -3
- package/src/replacement/contentsList.js +4 -6
- package/src/replacement/embedDirective.js +34 -0
- package/src/replacement/footnote.js +38 -1
- package/src/replacement/footnotesItem.js +10 -23
- package/src/replacement/footnotesList.js +28 -20
- package/src/replacement/includeDirective.js +49 -0
- package/src/replacement/line.js +7 -2
- package/src/replacement/subDivision/embedDirectives.js +52 -0
- package/src/replacement/subDivision/footnote.js +9 -0
- package/src/replacement/subDivision/footnotesDirective.js +6 -0
- package/src/replacement/subDivision/includeDirectives.js +58 -0
- package/src/replacement/subDivision.js +13 -14
- package/src/replacement.js +19 -9
- package/src/utilities/childNodes.js +3 -5
- package/src/utilities/footnotes.js +9 -7
- package/src/utilities/processing.js +93 -0
- package/src/utilities/query.js +9 -9
- package/src/utilities/replacement.js +28 -5
- package/lib/replacement/imported.js +0 -151
- package/lib/utilities/markdown.js +0 -87
- package/src/replacement/imported.js +0 -13
- package/src/utilities/markdown.js +0 -103
|
@@ -14,12 +14,9 @@ import PageNumberDirectiveSubDivisionReplacement from "../../replacement/subDivi
|
|
|
14
14
|
import { EMPTY_STRING } from "../../constants";
|
|
15
15
|
import { DIVISION_RULE_NAME } from "../../ruleNames";
|
|
16
16
|
import { renumberLinkMarkdownNodes } from "../../utilities/footnotes";
|
|
17
|
-
import { subDivisionMarkdownNodesFromNode,
|
|
18
|
-
embedDirectiveMarkdownNodesFromNode,
|
|
19
|
-
ignoreDirectiveMarkdownNodeFromNode,
|
|
20
|
-
pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
|
|
17
|
+
import { subDivisionMarkdownNodesFromNode, ignoreDirectiveMarkdownNodeFromNode, pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
|
|
21
18
|
|
|
22
|
-
const { clear } = arrayUtilities;
|
|
19
|
+
const { clear, filter } = arrayUtilities;
|
|
23
20
|
|
|
24
21
|
export default class DivisionMarkdownNode extends MarkdownNode {
|
|
25
22
|
constructor(ruleName, childNodes, precedence, opacity, domElement, divisionClassName) {
|
|
@@ -43,19 +40,30 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
isIgnored() {
|
|
46
|
-
const node = this,
|
|
43
|
+
const node = this, ///
|
|
47
44
|
ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
|
|
48
45
|
ignored = (ignoreDirectiveMarkdownNode !== null);
|
|
49
46
|
|
|
50
47
|
return ignored;
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
paginate(context) {
|
|
50
|
+
paginate(paginatedDivisionMarkdownNodes, context) {
|
|
51
|
+
const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context),
|
|
52
|
+
pageNumberDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(PageNumberDirectiveSubDivisionReplacement, context),
|
|
53
|
+
subDivisionReplacements = [
|
|
54
|
+
footnotesDirectiveSubDivisionReplacement,
|
|
55
|
+
pageNumberDirectiveSubDivisionReplacement
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
filter(subDivisionReplacements, (subDivisionReplacement) => {
|
|
59
|
+
if (subDivisionReplacement !== null) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
54
64
|
const { linesPerPage } = context,
|
|
55
|
-
childNodes = this.getChildNodes(),
|
|
56
65
|
paginatedChildNodes = [],
|
|
57
|
-
|
|
58
|
-
pageNumberDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(PageNumberDirectiveSubDivisionReplacement, context);
|
|
66
|
+
childNodes = this.getChildNodes();
|
|
59
67
|
|
|
60
68
|
let totalLines = 0;
|
|
61
69
|
|
|
@@ -68,9 +76,10 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
68
76
|
paginatedChildNodes.push(paginatedChildNode);
|
|
69
77
|
|
|
70
78
|
if (totalLines > linesPerPage) {
|
|
71
|
-
const divisionMarkdownNode = DivisionMarkdownNode.
|
|
79
|
+
const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
|
|
80
|
+
paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
|
|
72
81
|
|
|
73
|
-
|
|
82
|
+
paginatedDivisionMarkdownNodes.push(paginatedDivisionMarkdownNode);
|
|
74
83
|
|
|
75
84
|
clear(paginatedChildNodes);
|
|
76
85
|
|
|
@@ -79,21 +88,26 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
79
88
|
});
|
|
80
89
|
|
|
81
90
|
if (totalLines > 0) {
|
|
82
|
-
const divisionMarkdownNode = DivisionMarkdownNode.
|
|
91
|
+
const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
|
|
92
|
+
paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
|
|
83
93
|
|
|
84
|
-
|
|
94
|
+
paginatedDivisionMarkdownNodes.push(paginatedDivisionMarkdownNode);
|
|
85
95
|
}
|
|
86
|
-
|
|
87
|
-
return divisionMarkdownNodes;
|
|
88
96
|
}
|
|
89
97
|
|
|
90
98
|
setPageNumber(pageNumber) {
|
|
91
|
-
const
|
|
92
|
-
pageNumberDirective = pageNumberDirectiveMarkdownNodeFromNode(node);
|
|
99
|
+
const subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
|
|
93
100
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
|
|
102
|
+
const node = subDivisionMarkdownNode, ///
|
|
103
|
+
pageNumberDirective = pageNumberDirectiveMarkdownNodeFromNode(node);
|
|
104
|
+
|
|
105
|
+
if (pageNumberDirective !== null) {
|
|
106
|
+
pageNumberDirective.setPageNumber(pageNumber);
|
|
107
|
+
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
97
111
|
}
|
|
98
112
|
|
|
99
113
|
createContents(divisionMarkdownNodes, context) {
|
|
@@ -115,16 +129,18 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
115
129
|
return contentsCreated;
|
|
116
130
|
}
|
|
117
131
|
|
|
118
|
-
createFootnotes(
|
|
119
|
-
|
|
132
|
+
createFootnotes(footnoteMap, context) {
|
|
133
|
+
const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context);
|
|
134
|
+
|
|
135
|
+
if (footnotesDirectiveSubDivisionReplacement !== null) {
|
|
120
136
|
const divisionMarkdownNode = this, ///
|
|
121
|
-
footnotesListReplacement = FootnotesListReplacement.
|
|
137
|
+
footnotesListReplacement = FootnotesListReplacement.fromDivisionMarkdownNodeAndFootnoteMap(divisionMarkdownNode, footnoteMap, context);
|
|
122
138
|
|
|
123
139
|
if (footnotesListReplacement !== null) {
|
|
124
|
-
renumberLinkMarkdownNodes(divisionMarkdownNode, callback, context);
|
|
125
|
-
|
|
126
140
|
footnotesListReplacement.appendToDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
127
141
|
}
|
|
142
|
+
|
|
143
|
+
renumberLinkMarkdownNodes(divisionMarkdownNode, footnoteMap, callback, context);
|
|
128
144
|
}
|
|
129
145
|
|
|
130
146
|
function callback() {
|
|
@@ -132,33 +148,32 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
132
148
|
}
|
|
133
149
|
}
|
|
134
150
|
|
|
135
|
-
prepareFootnotes(context) {
|
|
151
|
+
prepareFootnotes(footnoteMap, context) {
|
|
136
152
|
const footnoteSubDivisionReplacements = this.removeSubDivisionMarkdownNodes(FootnoteSubDivisionReplacement, context);
|
|
137
153
|
|
|
138
|
-
|
|
154
|
+
footnoteSubDivisionReplacements.forEach((footnoteSubDivisionReplacement) => {
|
|
155
|
+
const footnoteReplacement = FootnoteReplacement.fromFootnoteSubDivisionReplacement(footnoteSubDivisionReplacement),
|
|
156
|
+
identifier = footnoteSubDivisionReplacement.identifier(context);
|
|
139
157
|
|
|
140
|
-
|
|
158
|
+
footnoteMap[identifier] = footnoteReplacement;
|
|
159
|
+
})
|
|
160
|
+
}
|
|
141
161
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
162
|
+
resolveIncludes(context) {
|
|
163
|
+
const divisionMarkdownNode = this, ///
|
|
164
|
+
subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
|
|
145
165
|
|
|
146
|
-
|
|
166
|
+
subDivisionMarkdownNodes.forEach((subDivisionMarkdownNode) => {
|
|
167
|
+
subDivisionMarkdownNode.resolveIncludes(divisionMarkdownNode, context);
|
|
168
|
+
});
|
|
147
169
|
}
|
|
148
170
|
|
|
149
171
|
resolveEmbeddings(context) {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
embedDirectiveMarkdownNodes.map((embedDirectiveMarkdownNode) => {
|
|
154
|
-
const importedReplacement = embedDirectiveMarkdownNode.import(context);
|
|
172
|
+
const divisionMarkdownNode = this, ///
|
|
173
|
+
subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
|
|
155
174
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
parentNode = this.retrieveParentNode(childNode);
|
|
159
|
-
|
|
160
|
-
importedReplacement.replaceEmbedDirectiveMarkdownNode(embedDirectiveMarkdownNode, parentNode, context);
|
|
161
|
-
}
|
|
175
|
+
subDivisionMarkdownNodes.forEach((subDivisionMarkdownNode) => {
|
|
176
|
+
subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
|
|
162
177
|
});
|
|
163
178
|
}
|
|
164
179
|
|
|
@@ -205,7 +220,7 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
205
220
|
subDivisionReplacement = this.findSubDivisionReplacement(SubDivisionReplacement, context);
|
|
206
221
|
|
|
207
222
|
if (subDivisionReplacement !== null) {
|
|
208
|
-
subDivisionReplacement.
|
|
223
|
+
subDivisionReplacement.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
209
224
|
}
|
|
210
225
|
|
|
211
226
|
return subDivisionReplacement;
|
|
@@ -216,20 +231,20 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
216
231
|
subDivisionReplacements = this.findSubDivisionReplacements(SubDivisionReplacement, context);
|
|
217
232
|
|
|
218
233
|
subDivisionReplacements.forEach((subDivisionReplacement) => {
|
|
219
|
-
subDivisionReplacement.
|
|
234
|
+
subDivisionReplacement.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
220
235
|
});
|
|
221
236
|
|
|
222
237
|
return subDivisionReplacements;
|
|
223
238
|
}
|
|
224
239
|
|
|
225
|
-
createFootnotesListReplacement(context) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
240
|
+
// createFootnotesListReplacement(context) {
|
|
241
|
+
// const footnoteSubDivisionReplacements = this.findSubDivisionReplacements(FootnoteSubDivisionReplacement, context),
|
|
242
|
+
// footnoteReplacements = footnoteReplacementsFromFootnoteSubDivisionReplacements(footnoteSubDivisionReplacements),
|
|
243
|
+
// divisionMarkdownNode = this, ///
|
|
244
|
+
// footnotesListReplacement = FootnotesListReplacement.fromFootnoteReplacementsAndDivisionMarkdownNode(footnoteReplacements, divisionMarkdownNode, context);
|
|
245
|
+
//
|
|
246
|
+
// return footnotesListReplacement;
|
|
247
|
+
// }
|
|
233
248
|
|
|
234
249
|
asHTML(context) {
|
|
235
250
|
let html = null;
|
|
@@ -258,7 +273,7 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
258
273
|
return divisionMarkdownNode;
|
|
259
274
|
}
|
|
260
275
|
|
|
261
|
-
static
|
|
276
|
+
static fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, divisionClassName, context) {
|
|
262
277
|
const ruleName = DIVISION_RULE_NAME,
|
|
263
278
|
childNodes = [
|
|
264
279
|
...paginatedChildNodes
|
|
@@ -266,22 +281,12 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
266
281
|
opacity = null,
|
|
267
282
|
divisionMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(DivisionMarkdownNode, ruleName, childNodes, opacity, divisionClassName);
|
|
268
283
|
|
|
269
|
-
|
|
270
|
-
|
|
284
|
+
subDivisionReplacements.forEach((subDivisionReplacement) => {
|
|
285
|
+
subDivisionReplacement = subDivisionReplacement.clone(); ///
|
|
271
286
|
|
|
272
|
-
|
|
273
|
-
}
|
|
287
|
+
subDivisionReplacement.appendToDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
288
|
+
});
|
|
274
289
|
|
|
275
290
|
return divisionMarkdownNode;
|
|
276
291
|
}
|
|
277
292
|
}
|
|
278
|
-
|
|
279
|
-
function footnoteReplacementsFromFootnoteSubDivisionReplacements(footnoteSubDivisionReplacements) {
|
|
280
|
-
const footnoteReplacements = footnoteSubDivisionReplacements.map((footnoteSubDivisionReplacement) => {
|
|
281
|
-
const footnoteReplacement = FootnoteReplacement.fromFootnoteSubDivisionReplacement(footnoteSubDivisionReplacement);
|
|
282
|
-
|
|
283
|
-
return footnoteReplacement;
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
return footnoteReplacements;
|
|
287
|
-
}
|
|
@@ -30,12 +30,6 @@ export default class FootnotesListMarkdownNode extends MarkdownNode {
|
|
|
30
30
|
|
|
31
31
|
clone() { return super.clone(this.start); }
|
|
32
32
|
|
|
33
|
-
static fromDivisionMarkdownNode(divisionMarkdownNode, context) {
|
|
34
|
-
let footnotesListMarkdownNode = null;
|
|
35
|
-
|
|
36
|
-
return footnotesListMarkdownNode;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
33
|
static fromFootnotesItemReplacementsAndStart(footnotesItemReplacements, start) {
|
|
40
34
|
let footnotesListMarkdownNode = null;
|
|
41
35
|
|
|
@@ -44,8 +38,8 @@ export default class FootnotesListMarkdownNode extends MarkdownNode {
|
|
|
44
38
|
if (footnotesItemReplacementsLength > 0) {
|
|
45
39
|
const ruleName = FOOTNOTES_LIST_RULE_NAME,
|
|
46
40
|
childNodes = footnotesItemReplacements.map((footnotesItemReplacement) => {
|
|
47
|
-
const footnotesItemReplacementMode = footnotesItemReplacement.
|
|
48
|
-
|
|
41
|
+
const footnotesItemReplacementMode = footnotesItemReplacement.getFootnotesItemMarkdownNode(),
|
|
42
|
+
childNode = footnotesItemReplacementMode; ///
|
|
49
43
|
|
|
50
44
|
return childNode;
|
|
51
45
|
}),
|
|
@@ -26,9 +26,9 @@ export default class HeadingMarkdownNode extends MarkdownNode {
|
|
|
26
26
|
addAnchor(context) {
|
|
27
27
|
const identifier = this.identifier(context),
|
|
28
28
|
anchorMarkdownNode = AnchorMarkdownNode.fromIdentifier(identifier),
|
|
29
|
-
|
|
29
|
+
prependedChildNode = anchorMarkdownNode; ///
|
|
30
30
|
|
|
31
|
-
this.prependChildNode(
|
|
31
|
+
this.prependChildNode(prependedChildNode);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
identifier(context) {
|
|
@@ -3,5 +3,11 @@
|
|
|
3
3
|
import MarkdownNode from "../../node/markdown";
|
|
4
4
|
|
|
5
5
|
export default class PlainTextMarkdownNode extends MarkdownNode {
|
|
6
|
+
isPlainTextMarkdownNode() {
|
|
7
|
+
const plainTextMarkdownNode = true;
|
|
8
|
+
|
|
9
|
+
return plainTextMarkdownNode;
|
|
10
|
+
}
|
|
11
|
+
|
|
6
12
|
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(PlainTextMarkdownNode, ruleName, childNodes, opacity); }
|
|
7
13
|
}
|
|
@@ -3,22 +3,39 @@
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
5
|
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
import EmbedDirectivesSubDivisionReplacement from "../../replacement/subDivision/embedDirectives";
|
|
7
|
+
import IncludeDirectivesSubDivisionReplacement from "../../replacement/subDivision/includeDirectives";
|
|
6
8
|
|
|
7
9
|
const { second } = arrayUtilities;
|
|
8
10
|
|
|
9
11
|
export default class SubDivisionMarkdownNode extends MarkdownNode {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
12
|
+
resolveEmbeddings(divisionMarkdownNode, context) {
|
|
13
|
+
const subDivisionMarkdownNode = this, ///
|
|
14
|
+
embedDirectivesSubDivisionReplacement = EmbedDirectivesSubDivisionReplacement.fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context);
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
if (embedDirectivesSubDivisionReplacement !== null) {
|
|
17
|
+
const subDivisionMarkdownNodes = embedDirectivesSubDivisionReplacement.replaceSubDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
18
|
+
|
|
19
|
+
subDivisionMarkdownNodes.forEach((subDivisionMarkdownNode) => {
|
|
20
|
+
subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
15
23
|
}
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
resolveIncludes(divisionMarkdownNode, context) {
|
|
26
|
+
const subDivisionMarkdownNode = this, ///
|
|
27
|
+
includeDirectivesSubDivisionReplacement = IncludeDirectivesSubDivisionReplacement.fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context);
|
|
28
|
+
|
|
29
|
+
if (includeDirectivesSubDivisionReplacement !== null) {
|
|
30
|
+
includeDirectivesSubDivisionReplacement.removeSubDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getDOMElement() {
|
|
18
35
|
const secondMarkdownNode = this.getSecondMarkdownNode(),
|
|
19
|
-
|
|
36
|
+
domElement = secondMarkdownNode.getDOMElement();
|
|
20
37
|
|
|
21
|
-
return
|
|
38
|
+
return domElement;
|
|
22
39
|
}
|
|
23
40
|
|
|
24
41
|
lines(context) {
|
|
@@ -24,12 +24,11 @@ export default class TableCellMarkdownNode extends MarkdownNode {
|
|
|
24
24
|
|
|
25
25
|
lineMarkdownNode.createDOMElement(context);
|
|
26
26
|
|
|
27
|
-
const
|
|
28
|
-
parentDOMElement = domElement; ///
|
|
27
|
+
const parentDOMElement = domElement; ///
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
domElement = lineMarkdownNode.getDOMElement();
|
|
30
|
+
|
|
31
|
+
parentDOMElement.appendChild(domElement)
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TableCellMarkdownNode, ruleName, childNodes, opacity); }
|
package/src/node/markdown.js
CHANGED
|
@@ -102,72 +102,19 @@ class MarkdownNode extends NonTerminalNode {
|
|
|
102
102
|
return attributeValue;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
childNodes.forEach((childNode) => {
|
|
109
|
-
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
110
|
-
|
|
111
|
-
if (childNodeNonTerminalNode) {
|
|
112
|
-
const nonTerminalNode = childNode, ///
|
|
113
|
-
markdownNode = nonTerminalNode; ///
|
|
114
|
-
|
|
115
|
-
markdownNode.resolveIncludes(context);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
resolveEmbeddings(context) {
|
|
121
|
-
const childNodes = this.getChildNodes();
|
|
122
|
-
|
|
123
|
-
childNodes.forEach((childNode) => {
|
|
124
|
-
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
125
|
-
|
|
126
|
-
if (childNodeNonTerminalNode) {
|
|
127
|
-
const nonTerminalNode = childNode, ///
|
|
128
|
-
markdownNode = nonTerminalNode; ///
|
|
129
|
-
|
|
130
|
-
markdownNode.resolveEmbeddings(context);
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
retrieveParentNode(childNode, node = this) {
|
|
136
|
-
let parentNode = null;
|
|
137
|
-
|
|
138
|
-
const nodeNonTerminalNode = node.isNonTerminalNode();
|
|
139
|
-
|
|
140
|
-
if (nodeNonTerminalNode) {
|
|
141
|
-
const nonTerminalNode = node, ///
|
|
142
|
-
childNodes = nonTerminalNode.getChildNodes(),
|
|
143
|
-
index = childNodes.indexOf(childNode);
|
|
144
|
-
|
|
145
|
-
if (index !== -1) {
|
|
146
|
-
parentNode = node; ///
|
|
147
|
-
} else {
|
|
148
|
-
const nodes = childNodes; ///
|
|
149
|
-
|
|
150
|
-
nodes.some((node) => {
|
|
151
|
-
parentNode = this.retrieveParentNode(childNode, node);
|
|
105
|
+
isPlainTextMarkdownNode() {
|
|
106
|
+
const plainTextMarkdownNode = false;
|
|
152
107
|
|
|
153
|
-
|
|
154
|
-
return true;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return parentNode;
|
|
108
|
+
return plainTextMarkdownNode;
|
|
161
109
|
}
|
|
162
110
|
|
|
163
111
|
lines(context) {
|
|
164
112
|
const childNodes = this.getChildNodes(),
|
|
165
113
|
lines = childNodes.reduce((lines, childNode) => {
|
|
166
|
-
const
|
|
114
|
+
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
167
115
|
|
|
168
|
-
if (
|
|
169
|
-
const
|
|
170
|
-
markdownNode = nonTerminalNode, ///
|
|
116
|
+
if (childNodeMarkdownNode) {
|
|
117
|
+
const markdownNode = childNode, ///
|
|
171
118
|
markdownNodeLines = markdownNode.lines(context);
|
|
172
119
|
|
|
173
120
|
lines += markdownNodeLines;
|
|
@@ -214,11 +161,10 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
214
161
|
childNodesAsHTML(indent, context) {
|
|
215
162
|
const childNodes = this.getChildNodes(),
|
|
216
163
|
childNodesHTML = childNodes.reduce((childNodesHTML, childNode) => {
|
|
217
|
-
const
|
|
164
|
+
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
218
165
|
|
|
219
|
-
if (
|
|
220
|
-
const
|
|
221
|
-
markdownNode = nonTerminalNode, ///
|
|
166
|
+
if (childNodeMarkdownNode) {
|
|
167
|
+
const markdownNode = childNode, ///
|
|
222
168
|
markdownNodeHTML = markdownNode.asHTML(indent, context);
|
|
223
169
|
|
|
224
170
|
if (markdownNodeHTML !== null) {
|
|
@@ -268,19 +214,18 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
268
214
|
const childNodes = this.getChildNodes();
|
|
269
215
|
|
|
270
216
|
childNodes.forEach((childNode) => {
|
|
271
|
-
const
|
|
217
|
+
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
272
218
|
|
|
273
|
-
if (
|
|
274
|
-
const
|
|
275
|
-
markdownNode = nonTerminalNode; ///
|
|
219
|
+
if (childNodeMarkdownNode) {
|
|
220
|
+
const markdownNode = childNode; ///
|
|
276
221
|
|
|
277
222
|
markdownNode.createDOMElement(context);
|
|
278
223
|
|
|
279
|
-
const
|
|
224
|
+
const domElement = markdownNode.getDOMElement();
|
|
280
225
|
|
|
281
|
-
|
|
226
|
+
if (domElement !== null) {
|
|
282
227
|
this.addDOMElement(domElement);
|
|
283
|
-
}
|
|
228
|
+
}
|
|
284
229
|
}
|
|
285
230
|
});
|
|
286
231
|
}
|
|
@@ -5,7 +5,12 @@ import ContentsLinkReplacement from "../replacement/contentsLink";
|
|
|
5
5
|
import ContentsItemMarkdownNode from "../node/markdown/contentsItem";
|
|
6
6
|
|
|
7
7
|
export default class ContentsItemReplacement extends Replacement {
|
|
8
|
-
|
|
8
|
+
getContentsItemMarkdownNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
contentsItemMarkdownNode = node; ///
|
|
11
|
+
|
|
12
|
+
return contentsItemMarkdownNode;
|
|
13
|
+
}
|
|
9
14
|
|
|
10
15
|
static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
|
|
11
16
|
const replacements = [],
|
|
@@ -42,7 +47,7 @@ export default class ContentsItemReplacement extends Replacement {
|
|
|
42
47
|
replacement.getTokens(tokens);
|
|
43
48
|
});
|
|
44
49
|
|
|
45
|
-
const contentsItemReplacement =
|
|
50
|
+
const contentsItemReplacement = Replacement.fromNodeAndTokens(ContentsItemReplacement, node, tokens);
|
|
46
51
|
|
|
47
52
|
return contentsItemReplacement;
|
|
48
53
|
}
|
|
@@ -5,8 +5,6 @@ import LineReplacement from "../replacement/line";
|
|
|
5
5
|
import ContentsLinkMarkdownNode from "../node/markdown/contentsLink";
|
|
6
6
|
|
|
7
7
|
export default class ContentsLinkReplacement extends Replacement {
|
|
8
|
-
static fromNodeAndTokens(node, tokens) { return super.fromNodeAndTokens(ContentsLinkReplacement, node, tokens); }
|
|
9
|
-
|
|
10
8
|
static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
|
|
11
9
|
let contentsLinkReplacement = null;
|
|
12
10
|
|
|
@@ -21,7 +19,7 @@ export default class ContentsLinkReplacement extends Replacement {
|
|
|
21
19
|
node = contentsLinkMarkdownNode, ///
|
|
22
20
|
tokens = lineReplacement.getTokens();
|
|
23
21
|
|
|
24
|
-
contentsLinkReplacement =
|
|
22
|
+
contentsLinkReplacement = Replacement.fromNodeAndTokens(ContentsLinkReplacement, node, tokens);
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
return contentsLinkReplacement;
|
|
@@ -13,15 +13,13 @@ const { filter } = arrayUtilities;
|
|
|
13
13
|
|
|
14
14
|
export default class ContentsListReplacement extends Replacement {
|
|
15
15
|
replaceContentsDirectiveSubdivisionReplacement(contentsDirectiveSubDivisionReplacement, divisionMarkdownNode, context) {
|
|
16
|
-
const
|
|
17
|
-
replacedNode =
|
|
16
|
+
const subDivisionMarkdownNode = contentsDirectiveSubDivisionReplacement.getSubDivisionMarkdownNode(),
|
|
17
|
+
replacedNode = subDivisionMarkdownNode, ///
|
|
18
18
|
parentNode = divisionMarkdownNode; ///
|
|
19
19
|
|
|
20
20
|
super.replace(replacedNode, parentNode, context)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
static fromNodeAndTokens(node, tokens) { return Replacement.fromNodeAndTokens(ContentsListReplacement, node, tokens); }
|
|
24
|
-
|
|
25
23
|
static fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context) {
|
|
26
24
|
const contentsItemReplacements = contentsItemReplacementsFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
|
|
27
25
|
contentsListMarkdownNode = ContentsListMarkdownNode.fromContentsItemReplacements(contentsItemReplacements),
|
|
@@ -32,7 +30,7 @@ export default class ContentsListReplacement extends Replacement {
|
|
|
32
30
|
contentsItemReplacement.getTokens(tokens);
|
|
33
31
|
});
|
|
34
32
|
|
|
35
|
-
const contentsListReplacement =
|
|
33
|
+
const contentsListReplacement = Replacement.fromNodeAndTokens(ContentsListReplacement, node, tokens);
|
|
36
34
|
|
|
37
35
|
return contentsListReplacement;
|
|
38
36
|
}
|
|
@@ -54,7 +52,7 @@ export default class ContentsListReplacement extends Replacement {
|
|
|
54
52
|
contentsItemReplacement.getTokens(tokens);
|
|
55
53
|
});
|
|
56
54
|
|
|
57
|
-
contentsListReplacement =
|
|
55
|
+
contentsListReplacement = Replacement.fromNodeAndTokens(ContentsListReplacement, node, tokens);
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
return contentsListReplacement;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Replacement from "../replacement";
|
|
4
|
+
|
|
5
|
+
import { subDivisionMarkdownNodesFromNode } from "../utilities/query";
|
|
6
|
+
|
|
7
|
+
export default class EmbedDirectiveReplacement extends Replacement {
|
|
8
|
+
addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode, divisionMarkdownNode, subDivisionMarkdownNodes, context) {
|
|
9
|
+
const existingNode = subDivisionMarkdownNode, ///
|
|
10
|
+
parentNode = divisionMarkdownNode; ///
|
|
11
|
+
|
|
12
|
+
super.addAfter(existingNode, parentNode, context);
|
|
13
|
+
|
|
14
|
+
divisionMarkdownNode = this.getDivisionMarkdownNode(); ///
|
|
15
|
+
|
|
16
|
+
const node = divisionMarkdownNode; ///
|
|
17
|
+
|
|
18
|
+
subDivisionMarkdownNodesFromNode(node, subDivisionMarkdownNodes);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
getDivisionMarkdownNode() {
|
|
22
|
+
const node = this.getNode(),
|
|
23
|
+
divisionMarkdownNode = node; ///
|
|
24
|
+
|
|
25
|
+
return divisionMarkdownNode;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens) {
|
|
29
|
+
const node = divisionMarkdownNode, ///
|
|
30
|
+
embedDirectiveReplacement = Replacement.fromNodeAndTokens(EmbedDirectiveReplacement, node, tokens);
|
|
31
|
+
|
|
32
|
+
return embedDirectiveReplacement;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -5,11 +5,48 @@ import Replacement from "../replacement";
|
|
|
5
5
|
import { footnoteMarkdownNodeFromNode } from "../utilities/query";
|
|
6
6
|
|
|
7
7
|
export default class FootnoteReplacement extends Replacement {
|
|
8
|
+
constructor(node, tokens, number) {
|
|
9
|
+
super(node, tokens);
|
|
10
|
+
|
|
11
|
+
this.number = number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
getNumber() {
|
|
15
|
+
return this.number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
setNumber(number) {
|
|
19
|
+
this.number = number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
isNumbered() {
|
|
23
|
+
const numbered = (this.number !== null);
|
|
24
|
+
|
|
25
|
+
return numbered;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
isUnnumbered() {
|
|
29
|
+
const numbered = this.isNumbered(),
|
|
30
|
+
unnumbered = !numbered;
|
|
31
|
+
|
|
32
|
+
return unnumbered;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getFootnoteMarkdownNode() {
|
|
36
|
+
const node = this.getNode(),
|
|
37
|
+
footnoteMarkdownNode = node; ///
|
|
38
|
+
|
|
39
|
+
return footnoteMarkdownNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static fromNode(node, context, ...remainingArguments) { return Replacement.fromNode(FootnoteReplacement, node, context, ...remainingArguments); }
|
|
43
|
+
|
|
8
44
|
static fromFootnoteSubDivisionReplacement(footnoteSubDivisionReplacement) {
|
|
9
45
|
const node = footnoteSubDivisionReplacement.getNode(),
|
|
10
46
|
footnoteMarkdownNode = footnoteMarkdownNodeFromNode(node),
|
|
11
47
|
descendentNode = footnoteMarkdownNode, ///
|
|
12
|
-
|
|
48
|
+
number = null,
|
|
49
|
+
footnoteReplacement = footnoteSubDivisionReplacement.contract(FootnoteReplacement, descendentNode, number);
|
|
13
50
|
|
|
14
51
|
return footnoteReplacement;
|
|
15
52
|
}
|