highmark-markdown 0.0.404 → 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.
Files changed (88) hide show
  1. package/example.js +1537 -728
  2. package/lib/defaultMarkdownStyle.js +2 -2
  3. package/lib/example/constants.js +7 -11
  4. package/lib/example/importer.js +56 -0
  5. package/lib/example/view/textarea/css.js +2 -2
  6. package/lib/example/view.js +51 -16
  7. package/lib/example.js +2 -2
  8. package/lib/index.js +9 -9
  9. package/lib/markdown/bnf.js +2 -2
  10. package/lib/mixins/node.js +42 -6
  11. package/lib/node/markdown/contentsLink.js +2 -2
  12. package/lib/node/markdown/contentsList.js +2 -2
  13. package/lib/node/markdown/directive/embee.js +15 -18
  14. package/lib/node/markdown/directive/include.js +18 -23
  15. package/lib/node/markdown/directives.js +13 -62
  16. package/lib/node/markdown/division.js +63 -54
  17. package/lib/node/markdown/footnotesList.js +2 -9
  18. package/lib/node/markdown/heading.js +3 -3
  19. package/lib/node/markdown/plainText.js +10 -2
  20. package/lib/node/markdown/subDivision.js +24 -8
  21. package/lib/node/markdown/tableCell.js +4 -5
  22. package/lib/node/markdown.js +24 -60
  23. package/lib/replacement/contentsItem.js +9 -7
  24. package/lib/replacement/contentsLink.js +2 -31
  25. package/lib/replacement/contentsList.js +4 -10
  26. package/lib/replacement/embedDirective.js +163 -0
  27. package/lib/replacement/footnote.js +81 -5
  28. package/lib/replacement/footnotesItem.js +13 -17
  29. package/lib/replacement/footnotesList.js +23 -22
  30. package/lib/replacement/includeDirective.js +176 -0
  31. package/lib/replacement/line.js +9 -7
  32. package/lib/replacement/subDivision/embedDirectives.js +152 -0
  33. package/lib/replacement/subDivision/footnote.js +10 -2
  34. package/lib/replacement/subDivision/footnotesDirective.js +33 -2
  35. package/lib/replacement/subDivision/includeDirectives.js +184 -0
  36. package/lib/replacement/subDivision.js +55 -12
  37. package/lib/replacement.js +28 -6
  38. package/lib/utilities/childNodes.js +4 -17
  39. package/lib/utilities/footnotes.js +9 -6
  40. package/lib/utilities/processing.js +83 -0
  41. package/lib/utilities/query.js +2 -2
  42. package/lib/utilities/replacement.js +31 -6
  43. package/package.json +1 -1
  44. package/src/defaultMarkdownStyle.js +0 -1
  45. package/src/example/constants.js +3 -4
  46. package/src/example/importer.js +115 -0
  47. package/src/example/view/textarea/css.js +1 -1
  48. package/src/example/view.js +11 -36
  49. package/src/example.js +2 -2
  50. package/src/index.js +1 -1
  51. package/src/markdown/bnf.js +3 -1
  52. package/src/mixins/node.js +54 -5
  53. package/src/node/markdown/contentsLink.js +1 -2
  54. package/src/node/markdown/contentsList.js +1 -1
  55. package/src/node/markdown/directive/embee.js +15 -18
  56. package/src/node/markdown/directive/include.js +20 -28
  57. package/src/node/markdown/directives.js +15 -52
  58. package/src/node/markdown/division.js +74 -69
  59. package/src/node/markdown/footnotesList.js +2 -8
  60. package/src/node/markdown/heading.js +2 -2
  61. package/src/node/markdown/plainText.js +6 -0
  62. package/src/node/markdown/subDivision.js +24 -7
  63. package/src/node/markdown/tableCell.js +4 -5
  64. package/src/node/markdown.js +15 -70
  65. package/src/replacement/contentsItem.js +7 -2
  66. package/src/replacement/contentsLink.js +1 -3
  67. package/src/replacement/contentsList.js +4 -6
  68. package/src/replacement/embedDirective.js +34 -0
  69. package/src/replacement/footnote.js +38 -1
  70. package/src/replacement/footnotesItem.js +10 -23
  71. package/src/replacement/footnotesList.js +28 -20
  72. package/src/replacement/includeDirective.js +49 -0
  73. package/src/replacement/line.js +7 -2
  74. package/src/replacement/subDivision/embedDirectives.js +52 -0
  75. package/src/replacement/subDivision/footnote.js +9 -0
  76. package/src/replacement/subDivision/footnotesDirective.js +6 -0
  77. package/src/replacement/subDivision/includeDirectives.js +58 -0
  78. package/src/replacement/subDivision.js +13 -14
  79. package/src/replacement.js +19 -9
  80. package/src/utilities/childNodes.js +3 -5
  81. package/src/utilities/footnotes.js +9 -7
  82. package/src/utilities/processing.js +93 -0
  83. package/src/utilities/query.js +9 -9
  84. package/src/utilities/replacement.js +28 -5
  85. package/lib/replacement/imported.js +0 -151
  86. package/lib/utilities/markdown.js +0 -87
  87. package/src/replacement/imported.js +0 -13
  88. 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
- divisionMarkdownNodes = [],
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.fromPageNumberDirectiveSubDivisionReplacementPaginatedChildNodesAndDivisionClassName(pageNumberDirectiveSubDivisionReplacement, paginatedChildNodes, this.divisionClassName, context);
79
+ const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
80
+ paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
72
81
 
73
- divisionMarkdownNodes.push(divisionMarkdownNode);
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.fromPageNumberDirectiveSubDivisionReplacementPaginatedChildNodesAndDivisionClassName(pageNumberDirectiveSubDivisionReplacement, paginatedChildNodes, this.divisionClassName, context);
91
+ const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
92
+ paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
83
93
 
84
- divisionMarkdownNodes.push(divisionMarkdownNode);
94
+ paginatedDivisionMarkdownNodes.push(paginatedDivisionMarkdownNode);
85
95
  }
86
-
87
- return divisionMarkdownNodes;
88
96
  }
89
97
 
90
98
  setPageNumber(pageNumber) {
91
- const node = this,
92
- pageNumberDirective = pageNumberDirectiveMarkdownNodeFromNode(node);
99
+ const subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
93
100
 
94
- if (pageNumberDirective !== null) {
95
- pageNumberDirective.setPageNumber(pageNumber);
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(footnoteReplacements, context) {
119
- if (footnoteReplacements !== null) {
132
+ createFootnotes(footnoteMap, context) {
133
+ const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context);
134
+
135
+ if (footnotesDirectiveSubDivisionReplacement !== null) {
120
136
  const divisionMarkdownNode = this, ///
121
- footnotesListReplacement = FootnotesListReplacement.fromFootnoteReplacementsAndDivisionMarkdownNode(footnoteReplacements, divisionMarkdownNode, context);
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
- let footnoteReplacements = footnoteReplacementsFromFootnoteSubDivisionReplacements(footnoteSubDivisionReplacements);
154
+ footnoteSubDivisionReplacements.forEach((footnoteSubDivisionReplacement) => {
155
+ const footnoteReplacement = FootnoteReplacement.fromFootnoteSubDivisionReplacement(footnoteSubDivisionReplacement),
156
+ identifier = footnoteSubDivisionReplacement.identifier(context);
139
157
 
140
- const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context);
158
+ footnoteMap[identifier] = footnoteReplacement;
159
+ })
160
+ }
141
161
 
142
- if (footnotesDirectiveSubDivisionReplacement === null) {
143
- footnoteReplacements = null;
144
- }
162
+ resolveIncludes(context) {
163
+ const divisionMarkdownNode = this, ///
164
+ subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
145
165
 
146
- return footnoteReplacements;
166
+ subDivisionMarkdownNodes.forEach((subDivisionMarkdownNode) => {
167
+ subDivisionMarkdownNode.resolveIncludes(divisionMarkdownNode, context);
168
+ });
147
169
  }
148
170
 
149
171
  resolveEmbeddings(context) {
150
- const node = this, ///
151
- embedDirectiveMarkdownNodes = embedDirectiveMarkdownNodesFromNode(node);
152
-
153
- embedDirectiveMarkdownNodes.map((embedDirectiveMarkdownNode) => {
154
- const importedReplacement = embedDirectiveMarkdownNode.import(context);
172
+ const divisionMarkdownNode = this, ///
173
+ subDivisionMarkdownNodes = this.findSubDivisionMarkdownNodes();
155
174
 
156
- if (importedReplacement !== null) {
157
- const childNode = embedDirectiveMarkdownNode, ///
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.removeFromMarkdownNode(divisionMarkdownNode, context);
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.removeFromMarkdownNode(divisionMarkdownNode, context);
234
+ subDivisionReplacement.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
220
235
  });
221
236
 
222
237
  return subDivisionReplacements;
223
238
  }
224
239
 
225
- createFootnotesListReplacement(context) {
226
- const footnoteSubDivisionReplacements = this.findSubDivisionReplacements(FootnoteSubDivisionReplacement, context),
227
- footnoteReplacements = footnoteReplacementsFromFootnoteSubDivisionReplacements(footnoteSubDivisionReplacements),
228
- divisionMarkdownNode = this, ///
229
- footnotesListReplacement = FootnotesListReplacement.fromFootnoteReplacementsAndDivisionMarkdownNode(footnoteReplacements, divisionMarkdownNode, context);
230
-
231
- return footnotesListReplacement;
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 fromPageNumberDirectiveSubDivisionReplacementPaginatedChildNodesAndDivisionClassName(pageNumberDirectiveSubDivisionReplacement, paginatedChildNodes, divisionClassName, context) {
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
- if (pageNumberDirectiveSubDivisionReplacement !== null) {
270
- pageNumberDirectiveSubDivisionReplacement = pageNumberDirectiveSubDivisionReplacement.clone(); ///
284
+ subDivisionReplacements.forEach((subDivisionReplacement) => {
285
+ subDivisionReplacement = subDivisionReplacement.clone(); ///
271
286
 
272
- pageNumberDirectiveSubDivisionReplacement.appendToDivisionMarkdownNode(divisionMarkdownNode, context);
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.getNode(),
48
- childNode = footnotesItemReplacementMode; ///
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
- childNode = anchorMarkdownNode; ///
29
+ prependedChildNode = anchorMarkdownNode; ///
30
30
 
31
- this.prependChildNode(childNode);
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
- getDOMElement() {
11
- const secondMarkdownNode = this.getSecondMarkdownNode(),
12
- domElement = secondMarkdownNode.getDOMElement();
12
+ resolveEmbeddings(divisionMarkdownNode, context) {
13
+ const subDivisionMarkdownNode = this, ///
14
+ embedDirectivesSubDivisionReplacement = EmbedDirectivesSubDivisionReplacement.fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context);
13
15
 
14
- return domElement;
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
- getDOMElements() {
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
- domElements = secondMarkdownNode.getDOMElements();
36
+ domElement = secondMarkdownNode.getDOMElement();
20
37
 
21
- return domElements;
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 domElements = lineMarkdownNode.getDOMElements(),
28
- parentDOMElement = domElement; ///
27
+ const parentDOMElement = domElement; ///
29
28
 
30
- domElements.forEach((domElement) => {
31
- parentDOMElement.appendChild(domElement)
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); }
@@ -102,72 +102,19 @@ class MarkdownNode extends NonTerminalNode {
102
102
  return attributeValue;
103
103
  }
104
104
 
105
- resolveIncludes(context) {
106
- const childNodes = this.getChildNodes();
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
- if (parentNode !== null) {
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 childNodeNonTerminalNode = childNode.isNonTerminalNode();
114
+ const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
167
115
 
168
- if (childNodeNonTerminalNode) {
169
- const nonTerminalNode = childNode, ///
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 childNodeNonTerminalNode = childNode.isNonTerminalNode();
164
+ const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
218
165
 
219
- if (childNodeNonTerminalNode) {
220
- const nonTerminalNode = childNode, ///
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 childNodeNonTerminalNode = childNode.isNonTerminalNode();
217
+ const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
272
218
 
273
- if (childNodeNonTerminalNode) {
274
- const nonTerminalNode = childNode, ///
275
- markdownNode = nonTerminalNode; ///
219
+ if (childNodeMarkdownNode) {
220
+ const markdownNode = childNode; ///
276
221
 
277
222
  markdownNode.createDOMElement(context);
278
223
 
279
- const domElements = markdownNode.getDOMElements();
224
+ const domElement = markdownNode.getDOMElement();
280
225
 
281
- domElements.forEach((domElement) => {
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
- static fromNodeAndTokens(node, tokens) { return Replacement.fromNodeAndTokens(ContentsItemReplacement, node, tokens); }
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 = ContentsItemReplacement.fromNodeAndTokens(node, tokens);
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 = ContentsLinkReplacement.fromNodeAndTokens(node, tokens);
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 contentsDirectiveSubDivisionReplacementRemovedNode = contentsDirectiveSubDivisionReplacement.getRemovedNode(),
17
- replacedNode = contentsDirectiveSubDivisionReplacementRemovedNode, ///
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 = ContentsListReplacement.fromNodeAndTokens(node, tokens);
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 = ContentsListReplacement.fromNodeAndTokens(node, tokens);
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
- footnoteReplacement = footnoteSubDivisionReplacement.contract(FootnoteReplacement, descendentNode);
48
+ number = null,
49
+ footnoteReplacement = footnoteSubDivisionReplacement.contract(FootnoteReplacement, descendentNode, number);
13
50
 
14
51
  return footnoteReplacement;
15
52
  }