highmark-markdown 1.0.176 → 1.0.178

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 (120) hide show
  1. package/example.js +2834 -6275
  2. package/lib/example/importer.js +2 -2
  3. package/lib/example/view/div/preview.js +19 -19
  4. package/lib/example/view/textarea/plainText.js +3 -3
  5. package/lib/example/view/xmp.js +3 -3
  6. package/lib/example/view.js +7 -7
  7. package/lib/index.js +5 -1
  8. package/lib/map/className.js +4 -45
  9. package/lib/map/node/html.js +16 -9
  10. package/lib/map/node/markdown.js +13 -12
  11. package/lib/map/tagName.js +4 -45
  12. package/lib/markdown/bnf.js +2 -2
  13. package/lib/mixins/node.js +1 -11
  14. package/lib/node/html/{indexList.js → list/index.js} +2 -2
  15. package/lib/node/html/listing/inline.js +7 -1
  16. package/lib/node/html/topmost.js +21 -39
  17. package/lib/node/html.js +15 -1
  18. package/lib/node/markdown/directive/embee.js +28 -21
  19. package/lib/node/markdown/directive/include.js +28 -23
  20. package/lib/node/markdown/division.js +82 -249
  21. package/lib/node/markdown/{footnotesItem.js → item/footnotes.js} +5 -5
  22. package/lib/node/markdown/{contentsLink.js → link/contents.js} +3 -3
  23. package/lib/node/markdown/{emailLink.js → link/email.js} +3 -3
  24. package/lib/node/markdown/{footnoteLink.js → link/footnote.js} +3 -3
  25. package/lib/node/markdown/{indexLink.js → link/index.js} +2 -2
  26. package/lib/node/markdown/{contentsList.js → list/contents.js} +3 -3
  27. package/lib/node/markdown/{footnotesList.js → list/footnotes.js} +3 -3
  28. package/lib/node/markdown/{indexList.js → list/index.js} +3 -3
  29. package/lib/node/markdown/{blockListing.js → listng/block.js} +2 -2
  30. package/lib/node/markdown/{inlineListing.js → listng/inline.js} +21 -23
  31. package/lib/node/markdown/subDivision.js +144 -0
  32. package/lib/node/markdown/topmost.js +32 -65
  33. package/lib/queries.js +4 -3
  34. package/lib/ruleNames.js +16 -6
  35. package/lib/transform/{subDivision/contentsDirective.js → contentsDirective.js} +5 -6
  36. package/lib/transform/contentsLink.js +3 -3
  37. package/lib/transform/contentsList.js +7 -8
  38. package/lib/transform/footnote.js +2 -3
  39. package/lib/transform/{subDivision/footnote.js → footnoteIdentifier.js} +6 -7
  40. package/lib/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +5 -6
  41. package/lib/transform/footnotesItem.js +3 -3
  42. package/lib/transform/footnotesList.js +4 -5
  43. package/lib/transform/{subDivision/indexDirective.js → indexDirective.js} +5 -6
  44. package/lib/transform/indexList.js +3 -3
  45. package/lib/transform/markdown/directive/embed.js +134 -0
  46. package/lib/transform/markdown/directive/ignore.js +134 -0
  47. package/lib/transform/{embedDirective.js → markdown/directive/include.js} +20 -22
  48. package/lib/transform/markdown/subDivision.js +140 -0
  49. package/lib/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +5 -6
  50. package/lib/utilities/dom.js +62 -0
  51. package/lib/utilities/footnotes.js +4 -5
  52. package/lib/utilities/html.js +135 -51
  53. package/lib/utilities/index.js +5 -5
  54. package/lib/utilities/markdown.js +66 -22
  55. package/lib/utilities/query.js +17 -99
  56. package/package.json +4 -4
  57. package/src/example/importer.js +0 -1
  58. package/src/example/view/div/preview.js +16 -16
  59. package/src/example/view/textarea/plainText.js +2 -2
  60. package/src/example/view/xmp.js +3 -2
  61. package/src/example/view.js +9 -8
  62. package/src/index.js +1 -0
  63. package/src/map/className.js +3 -6
  64. package/src/map/node/html.js +18 -6
  65. package/src/map/node/markdown.js +15 -12
  66. package/src/map/tagName.js +3 -6
  67. package/src/markdown/bnf.js +33 -32
  68. package/src/mixins/node.js +0 -11
  69. package/src/node/html/{indexList.js → list/index.js} +1 -1
  70. package/src/node/html/listing/inline.js +2 -0
  71. package/src/node/html/topmost.js +16 -47
  72. package/src/node/html.js +12 -0
  73. package/src/node/markdown/directive/embee.js +37 -25
  74. package/src/node/markdown/directive/include.js +36 -27
  75. package/src/node/markdown/division.js +153 -136
  76. package/src/node/markdown/{footnotesItem.js → item/footnotes.js} +4 -4
  77. package/src/node/markdown/{contentsLink.js → link/contents.js} +2 -2
  78. package/src/node/markdown/{emailLink.js → link/email.js} +2 -2
  79. package/src/node/markdown/{footnoteLink.js → link/footnote.js} +2 -2
  80. package/src/node/markdown/{indexLink.js → link/index.js} +1 -1
  81. package/src/node/markdown/{contentsList.js → list/contents.js} +2 -2
  82. package/src/node/markdown/{footnotesList.js → list/footnotes.js} +2 -2
  83. package/src/node/markdown/{indexList.js → list/index.js} +2 -2
  84. package/src/node/markdown/{blockListing.js → listng/block.js} +1 -1
  85. package/src/node/markdown/listng/inline.js +28 -0
  86. package/src/node/markdown/subDivision.js +58 -0
  87. package/src/node/markdown/topmost.js +34 -64
  88. package/src/queries.js +5 -3
  89. package/src/ruleNames.js +6 -2
  90. package/src/transform/{subDivision/contentsDirective.js → contentsDirective.js} +1 -3
  91. package/src/transform/contentsLink.js +1 -1
  92. package/src/transform/contentsList.js +1 -2
  93. package/src/transform/footnote.js +0 -2
  94. package/src/transform/{subDivision/footnote.js → footnoteIdentifier.js} +1 -3
  95. package/src/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +1 -3
  96. package/src/transform/footnotesItem.js +1 -1
  97. package/src/transform/footnotesList.js +1 -3
  98. package/src/transform/{subDivision/indexDirective.js → indexDirective.js} +1 -3
  99. package/src/transform/indexList.js +1 -1
  100. package/src/transform/markdown/directive/embed.js +19 -0
  101. package/src/transform/markdown/directive/ignore.js +19 -0
  102. package/src/transform/markdown/directive/include.js +29 -0
  103. package/src/transform/markdown/subDivision.js +25 -0
  104. package/src/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +1 -3
  105. package/src/utilities/dom.js +58 -0
  106. package/src/utilities/footnotes.js +1 -3
  107. package/src/utilities/html.js +122 -52
  108. package/src/utilities/index.js +4 -4
  109. package/src/utilities/markdown.js +57 -17
  110. package/src/utilities/query.js +12 -94
  111. package/lib/transform/division.js +0 -193
  112. package/lib/transform/includeDirective.js +0 -158
  113. package/lib/transform/subDivision/embedDirectives.js +0 -147
  114. package/lib/transform/subDivision/includeDirectives.js +0 -142
  115. package/src/node/markdown/inlineListing.js +0 -28
  116. package/src/transform/division.js +0 -41
  117. package/src/transform/embedDirective.js +0 -34
  118. package/src/transform/includeDirective.js +0 -49
  119. package/src/transform/subDivision/embedDirectives.js +0 -52
  120. package/src/transform/subDivision/includeDirectives.js +0 -48
@@ -3,6 +3,8 @@
3
3
  import HTMLNode from "../../../node/html";
4
4
 
5
5
  export default class InlineListingHTMLNode extends HTMLNode {
6
+ content(context) { return this.outerNode.content(context); }
7
+
6
8
  createDOMElement(context) {
7
9
  let domElement;
8
10
 
@@ -1,69 +1,38 @@
1
1
  "use strict";
2
2
 
3
- import { nodeUtilities} from "occam-dom";
4
- import { arrayUtilities } from "necessary";
5
-
6
- import queries from "../../queries";
7
3
  import HTMLNode from "../../node/html";
8
- import htmlNodeMap from "../../map/node/html";
9
4
 
10
- const { push } = arrayUtilities,
11
- { topmostNodeFromOuterNodes } = nodeUtilities;
5
+ import { HTML_RULE_NAME } from "../../ruleNames";
6
+ import { divisionHTMLNodesFromNode } from "../../utilities/html";
12
7
 
13
8
  export default class TopmostHTMLNode extends HTMLNode {
14
9
  adjustIndent(indent) {
15
10
  return indent;
16
11
  }
17
12
 
18
- asString() {
19
- const { tagName } = this.constructor,
20
- string = tagName; ///
21
-
22
- return string;
23
- }
24
-
25
- static tagName = "html";
26
-
27
- static className = null;
28
-
29
- static fromNothing() { return HTMLNode.fromNothing(TopmostHTMLNode); }
30
-
31
- static fromTopmostMarkdownNode(topmostMarkdownNode) {
13
+ getRuleName() {
14
+ const ruleName = HTML_RULE_NAME;
32
15
 
16
+ return ruleName;
33
17
  }
34
18
 
35
- static fromDivisionMarkdownNode(divisionMarkdownNode) {
36
- const node = divisionMarkdownNode, ///
37
- nodes = nodesFromNodeAndQueries(node, queries),
38
- topmostHTMLNode = topmostNodeFromOuterNodes(ClassFromOuterNode, nodes);
19
+ getDivisionHTMLNodes() {
20
+ const node = this, ///
21
+ divisionHTMLNodes = divisionHTMLNodesFromNode(node);
39
22
 
40
- return topmostHTMLNode;
23
+ return divisionHTMLNodes;
41
24
  }
42
- }
43
-
44
- function ClassFromOuterNode(outerNode) {
45
- let Class;
46
25
 
47
- if (outerNode === null) {
48
- Class = TopmostHTMLNode; ///
49
- } else {
50
- const nonTerminalNode = outerNode, ///
51
- ruleName = nonTerminalNode.getRuleName();
26
+ getDivisionHTMLNodeAt(index) {
27
+ const divisionHTMLNodes = this.getDivisionHTMLNodes(),
28
+ divisionHTMLNode = divisionHTMLNodes[index] || null;
52
29
 
53
- Class = htmlNodeMap[ruleName] || HTMLNode;
30
+ return divisionHTMLNode;
54
31
  }
55
32
 
56
- return Class;
57
- }
58
-
59
- function nodesFromNodeAndQueries(node, queries) {
60
- const nodes = [];
61
-
62
- queries.forEach((query) => {
63
- const queryNodes = query.execute(node);
33
+ static tagName = "html";
64
34
 
65
- push(nodes, queryNodes);
66
- });
35
+ static className = null;
67
36
 
68
- return nodes;
37
+ static fromNothing() { return HTMLNode.fromNothing(TopmostHTMLNode); }
69
38
  }
package/src/node/html.js CHANGED
@@ -30,6 +30,18 @@ class HTMLNode extends Node {
30
30
 
31
31
  getRuleName() { return this.outerNode.getRuleName(); }
32
32
 
33
+ isTerminalNode() {
34
+ const terminalNode = false;
35
+
36
+ return terminalNode;
37
+ }
38
+
39
+ isNonTerminalNode() {
40
+ const nonTerminalNode = true;
41
+
42
+ return nonTerminalNode;
43
+ }
44
+
33
45
  adjustIndent(indent) {
34
46
  indent = (indent === null) ?
35
47
  EMPTY_STRING :
@@ -2,11 +2,32 @@
2
2
 
3
3
  import MarkdownNode from "../../../node/markdown";
4
4
  import PathMarkdownNode from "../../../node/markdown/path";
5
- import EmbedDirectiveTransform from "../../../transform/embedDirective";
5
+ import EmbedDirectiveMarkdownTransform from "../../../transform/markdown/directive/embed";
6
+
7
+ import { divisionMarkdownNodeFromNode, subDivisionMarkdownNodeFromNode } from "../../../utilities/markdown";
6
8
 
7
9
  export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
8
- resolve(context) {
9
- let embedDirectiveTransform = null;
10
+ filePath(context) {
11
+ const filePath = this.fromFirstLastChildNode((firstLastChildNode) => {
12
+ let filePath = null;
13
+
14
+ const firstLastChildNodePathMarkdownNode = (firstLastChildNode instanceof PathMarkdownNode);
15
+
16
+ if (firstLastChildNodePathMarkdownNode) {
17
+ const pathMarkdownNode = firstLastChildNode, ///
18
+ pathMarkdownNodePath = pathMarkdownNode.path(context);
19
+
20
+ filePath = pathMarkdownNodePath; ///
21
+ }
22
+
23
+ return filePath;
24
+ });
25
+
26
+ return filePath;
27
+ }
28
+
29
+ resolveEmbedding(context) {
30
+ let embedDirectiveMarkdownTransform = null;
10
31
 
11
32
  const filePath = this.filePath(context);
12
33
 
@@ -22,33 +43,24 @@ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
22
43
  delete context.importedNode;
23
44
  delete context.importedTokens;
24
45
 
25
- const divisionMarkdownNode = importedNode, ///
26
- tokens = importedTokens; ///
46
+ const node = importedNode, ///
47
+ divisionMarkdownNode = divisionMarkdownNodeFromNode(node);
27
48
 
28
- embedDirectiveTransform = EmbedDirectiveTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
29
- }
30
- }
31
-
32
- return embedDirectiveTransform;
33
- }
34
-
35
- filePath(context) {
36
- const filePath = this.fromFirstLastChildNode((firstLastChildNode) => {
37
- let filePath = null;
49
+ if (divisionMarkdownNode !== null) {
50
+ const node = divisionMarkdownNode, ///
51
+ tokens = importedTokens, ///
52
+ subDivisionMarkdownNode = subDivisionMarkdownNodeFromNode(node);
38
53
 
39
- const firstLastChildNodePathMarkdownNode = (firstLastChildNode instanceof PathMarkdownNode);
54
+ if (subDivisionMarkdownNode !== null) {
55
+ divisionMarkdownNode.removeSubDivisionMarkdownNode(subDivisionMarkdownNode);
40
56
 
41
- if (firstLastChildNodePathMarkdownNode) {
42
- const pathMarkdownNode = firstLastChildNode, ///
43
- pathMarkdownNodePath = pathMarkdownNode.path(context);
44
-
45
- filePath = pathMarkdownNodePath; ///
57
+ embedDirectiveMarkdownTransform = EmbedDirectiveMarkdownTransform.fromSubDivisionMarkdownNodeAndTokens(subDivisionMarkdownNode, tokens);
58
+ }
59
+ }
46
60
  }
61
+ }
47
62
 
48
- return filePath;
49
- });
50
-
51
- return filePath;
63
+ return embedDirectiveMarkdownTransform;
52
64
  }
53
65
 
54
66
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
@@ -2,11 +2,32 @@
2
2
 
3
3
  import MarkdownNode from "../../../node/markdown";
4
4
  import PathMarkdownNode from "../../../node/markdown/path";
5
- import IncludeDirectiveTransform from "../../../transform/includeDirective";
5
+ import IncludeDirectiveMarkdownTransform from "../../../transform/markdown/directive/include";
6
+
7
+ import { divisionMarkdownNodeFromNode } from "../../../utilities/markdown";
6
8
 
7
9
  export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
8
- resolve(context) {
9
- let includeDirectiveTransform = null;
10
+ filePath(context) {
11
+ const filePath = this.fromFirstLastChildNode((firstLastChildNode) => {
12
+ let filePath = null;
13
+
14
+ const firstLastChildNodePathMarkdownNode = (firstLastChildNode instanceof PathMarkdownNode);
15
+
16
+ if (firstLastChildNodePathMarkdownNode) {
17
+ const pathMarkdownNode = firstLastChildNode, ///
18
+ pathMarkdownNodePath = pathMarkdownNode.path(context);
19
+
20
+ filePath = pathMarkdownNodePath; ///
21
+ }
22
+
23
+ return filePath;
24
+ });
25
+
26
+ return filePath;
27
+ }
28
+
29
+ resolveInclude(context) {
30
+ let includeDirectiveMarkdownTransform = null;
10
31
 
11
32
  const filePath = this.filePath(context);
12
33
 
@@ -24,36 +45,24 @@ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
24
45
  delete context.importedTokens;
25
46
  delete context.importedClassName;
26
47
 
27
- const divisionMarkdownNode = importedNode, ///
28
- divisionClassName = importedClassName, ///
29
- tokens = importedTokens; ///
48
+ const node = importedNode, ///
49
+ divisionMarkdownNode = divisionMarkdownNodeFromNode(node);
30
50
 
31
- divisionMarkdownNode.setDivisionClassName(divisionClassName);
51
+ if (divisionMarkdownNode !== null) {
52
+ const topmostMarkdownNode = node, ///
53
+ divisionClassName = importedClassName, ///
54
+ tokens = importedTokens; ///
32
55
 
33
- includeDirectiveTransform = IncludeDirectiveTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
34
- }
35
- }
36
-
37
- return includeDirectiveTransform;
38
- }
39
-
40
- filePath(context) {
41
- const filePath = this.fromFirstLastChildNode((firstLastChildNode) => {
42
- let filePath = null;
56
+ topmostMarkdownNode.removeDivisionMarkdownNode(divisionMarkdownNode);
43
57
 
44
- const firstLastChildNodePathMarkdownNode = (firstLastChildNode instanceof PathMarkdownNode);
58
+ divisionMarkdownNode.setDivisionClassName(divisionClassName);
45
59
 
46
- if (firstLastChildNodePathMarkdownNode) {
47
- const pathMarkdownNode = firstLastChildNode, ///
48
- pathMarkdownNodePath = pathMarkdownNode.path(context);
49
-
50
- filePath = pathMarkdownNodePath; ///
60
+ includeDirectiveMarkdownTransform = IncludeDirectiveMarkdownTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
61
+ }
51
62
  }
63
+ }
52
64
 
53
- return filePath;
54
- });
55
-
56
- return filePath;
65
+ return includeDirectiveMarkdownTransform;
57
66
  }
58
67
 
59
68
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
@@ -1,64 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
3
  import MarkdownNode from "../../node/markdown";
6
- import IndexTransform from "../../transform/index";
7
- import FootnoteTransform from "../../transform/footnote";
8
- import IndexAnchorTransform from "../../transform/indexAnchor";
9
- import ContentsListTransform from "../../transform/contentsList";
10
- import FootnotesListTransform from "../../transform/footnotesList";
11
- import FootnoteDivisionTransform from "../../transform/subDivision/footnote";
12
- import EmbedDirectivesDivisionTransform from "../../transform/subDivision/embedDirectives";
13
- import IncludeDirectivesDivisionTransform from "../../transform/subDivision/includeDirectives";
14
- import IndexDirectiveDivisionTransform from "../../transform/subDivision/indexDirective";
15
- import ContentsDirectiveDivisionTransform from "../../transform/subDivision/contentsDirective";
16
- import FootnotesDirectiveDivisionTransform from "../../transform/subDivision/footnotesDirective";
17
- import PageNumberDirectiveDivisionTransform from "../../transform/subDivision/pageNumberDirective";
18
-
19
- import { DIVISION_RULE_NAME } from "../../ruleNames";
20
- import { renumberFootnoteLinkMarkdownNodes } from "../../utilities/footnotes";
21
- import { subDivisionMarkdownNodesFromNode, ignoreDirectiveMarkdownNodeFromNode, pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
22
-
23
- const { clear, filter } = arrayUtilities;
24
-
25
- export default class DivisionMarkdownNode extends MarkdownNode {
26
- resolveIncludes(context) {
27
- const divisionMarkdownNode = this, ///
28
- includeDirectivesDivisionTransform = IncludeDirectivesDivisionTransform.fromDivisionMarkdownNode(divisionMarkdownNode, context);
29
-
30
- if (includeDirectivesDivisionTransform !== null) {
31
- includeDirectivesDivisionTransform.removeDivisionMarkdownNode(divisionMarkdownNode, context);
32
- }
33
- }
34
-
35
- resolveEmbeddings(divisionMarkdownNode, context) {
36
- const divisionMarkdownNode = this, ///
37
- embedDirectivesDivisionTransform = EmbedDirectivesDivisionTransform.fromDivisionMarkdownNode(divisionMarkdownNode, context);
38
-
39
- if (embedDirectivesDivisionTransform !== null) {
40
- const subDivisionMarkdownNodes = embedDirectivesDivisionTransform.replaceDivisionMarkdownNode(divisionMarkdownNode, context);
41
-
42
- subDivisionMarkdownNodes.forEach((subDivisionMarkdownNode) => {
43
- subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
44
- });
45
- }
46
- }
47
-
48
- className(context) {
49
- const className = this.divisionClassName; ///
4
+ import IgnoreDirectiveMarkdownTransform from "../../transform/markdown/directive/ignore";
50
5
 
51
- return className;
52
- }
53
-
54
- isIgnored() {
55
- const node = this, ///
56
- ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
57
- ignored = (ignoreDirectiveMarkdownNode !== null);
58
-
59
- return ignored;
60
- }
6
+ import { ignoreDirectiveMarkdownNodeFromNode, subDivisionMarkdownNodesFromNode, includeDirectiveMarkdownNodesFromNode } from "../../utilities/markdown";
61
7
 
8
+ export default class DivisionMarkdownNode extends MarkdownNode {
62
9
  // getPageNumber() {
63
10
  // let pageNumber = null;
64
11
  //
@@ -193,120 +140,190 @@ export default class DivisionMarkdownNode extends MarkdownNode {
193
140
  // footnoteTransformMap[identifier] = footnoteTransform;
194
141
  // });
195
142
  // }
143
+ //
144
+ // findDivisionTransform(DivisionTransform, context) {
145
+ // let subDivisionTransform = null;
146
+ //
147
+ // const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
148
+ //
149
+ // subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
150
+ // subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
151
+ //
152
+ // if (subDivisionTransform !== null) {
153
+ // return true;
154
+ // }
155
+ // });
156
+ //
157
+ // return subDivisionTransform;
158
+ // }
159
+ //
160
+ // findDivisionTransforms(DivisionTransform, context) {
161
+ // const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes(),
162
+ // subDivisionTransforms = subDivisionMarkdownNodes.reduce((subDivisionTransforms, subDivisionMarkdownNode) => {
163
+ // const subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
164
+ //
165
+ // if (subDivisionTransform !== null) {
166
+ // subDivisionTransforms.push(subDivisionTransform);
167
+ // }
168
+ //
169
+ // return subDivisionTransforms;
170
+ // }, []);
171
+ //
172
+ // return subDivisionTransforms;
173
+ // }
174
+ //
175
+ // findPageNumberDirectiveMarkdownNode() {
176
+ // let pageNumberDirectiveMarkdownNode = null;
177
+ //
178
+ // const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
179
+ //
180
+ // subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
181
+ // const node = subDivisionMarkdownNode; ///
182
+ //
183
+ // pageNumberDirectiveMarkdownNode = pageNumberDirectiveMarkdownNodeFromNode(node);
184
+ //
185
+ // if (pageNumberDirectiveMarkdownNode !== null) {
186
+ // return true;
187
+ // }
188
+ // });
189
+ //
190
+ // return pageNumberDirectiveMarkdownNode;
191
+ // }
192
+ //
193
+ // removeSubDivisionMarkdownNode(subDivisionMarkdownNode) {
194
+ // const childNode = subDivisionMarkdownNode; ///
195
+ //
196
+ // this.removeChildNode(childNode);
197
+ // }
198
+ //
199
+ // createFootnotesListTransform(footnoteTransformMap, context) {
200
+ // const footnoteDivisionTransforms = this.findDivisionTransforms(FootnoteDivisionTransform, context);
201
+ //
202
+ // footnoteDivisionTransforms.forEach((footnoteDivisionTransform) => {
203
+ // const footnoteTransform = FootnoteTransform.fromFootnoteDivisionTransform(footnoteDivisionTransform),
204
+ // identifier = footnoteDivisionTransform.identifier(context);
205
+ //
206
+ // footnoteTransformMap[identifier] = footnoteTransform;
207
+ // });
208
+ //
209
+ // const divisionMarkdownNode = this, ///
210
+ // footnotesListDivisionTransform = FootnotesListTransform.fromDivisionMarkdownNodeAndFootnoteTransformMap(divisionMarkdownNode, footnoteTransformMap, context);
211
+ //
212
+ // return footnotesListDivisionTransform;
213
+ // }
196
214
 
197
- findDivisionTransform(DivisionTransform, context) {
198
- let subDivisionTransform = null;
199
-
200
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
201
-
202
- subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
203
- subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
204
-
205
- if (subDivisionTransform !== null) {
206
- return true;
207
- }
208
- });
215
+ constructor(ruleName, parentNode, childNodes, opacity, precedence, divisionClassName) {
216
+ super(ruleName, parentNode, childNodes, opacity, precedence);
209
217
 
210
- return subDivisionTransform;
218
+ this.divisionClassName = divisionClassName;
211
219
  }
212
220
 
213
- findDivisionTransforms(DivisionTransform, context) {
214
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes(),
215
- subDivisionTransforms = subDivisionMarkdownNodes.reduce((subDivisionTransforms, subDivisionMarkdownNode) => {
216
- const subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
217
-
218
- if (subDivisionTransform !== null) {
219
- subDivisionTransforms.push(subDivisionTransform);
220
- }
221
-
222
- return subDivisionTransforms;
223
- }, []);
221
+ getDivisionClassName() {
222
+ return this.divisionClassName;
223
+ }
224
224
 
225
- return subDivisionTransforms;
225
+ setDivisionClassName(divisionClassName) {
226
+ this.divisionClassName = divisionClassName;
226
227
  }
227
228
 
228
- findDivisionMarkdownNodes() {
229
+ isIgnored() {
229
230
  const node = this, ///
230
- subDivisionMarkdownNodes = subDivisionMarkdownNodesFromNode(node);
231
+ ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
232
+ ignored = (ignoreDirectiveMarkdownNode !== null);
231
233
 
232
- return subDivisionMarkdownNodes;
234
+ return ignored;
233
235
  }
234
236
 
235
- findPageNumberDirectiveMarkdownNode() {
236
- let pageNumberDirectiveMarkdownNode = null;
237
+ className(context) {
238
+ const className = this.divisionClassName; ///
237
239
 
238
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
240
+ return className;
241
+ }
239
242
 
240
- subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
241
- const node = subDivisionMarkdownNode; ///
243
+ resolveIgnored(topmostMarkdownNode, context) {
244
+ const ignored = this.isIgnored();
242
245
 
243
- pageNumberDirectiveMarkdownNode = pageNumberDirectiveMarkdownNodeFromNode(node);
246
+ if (!ignored) {
247
+ return;
248
+ }
244
249
 
245
- if (pageNumberDirectiveMarkdownNode !== null) {
246
- return true;
247
- }
248
- });
250
+ const divisionMarkdownNode = this, ///
251
+ ignoreDirectiveMarkdownTransform = IgnoreDirectiveMarkdownTransform.fromDivisionMarkdownNode(divisionMarkdownNode);
249
252
 
250
- return pageNumberDirectiveMarkdownNode;
253
+ ignoreDirectiveMarkdownTransform.removeFromTopmostMarkdownNode(topmostMarkdownNode, context);
251
254
  }
252
255
 
253
- removeDivisionMarkdownNode(DivisionTransform, context) {
254
- const divisionMarkdownNode = this, //
255
- subDivisionTransform = this.findDivisionTransform(DivisionTransform, context);
256
+ resolveIncludes(topmostMarkdownNode, context) {
257
+ const node = this, ///
258
+ includeDirectiveMarkdownNodes = includeDirectiveMarkdownNodesFromNode(node),
259
+ includeDirectiveMarkdownTransforms = includeDirectiveMarkdownNodes.reduce((includeDirectiveMarkdownTransforms, includeDirectiveMarkdownNode) => {
260
+ const includeDirectiveMarkdownTransform = includeDirectiveMarkdownNode.resolveInclude(context);
256
261
 
257
- if (subDivisionTransform !== null) {
258
- subDivisionTransform.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
259
- }
262
+ if (includeDirectiveMarkdownTransform !== null) {
263
+ includeDirectiveMarkdownTransforms.push(includeDirectiveMarkdownTransform);
264
+ }
260
265
 
261
- return subDivisionTransform;
262
- }
266
+ return includeDirectiveMarkdownTransforms;
267
+ }, []);
263
268
 
264
- removeDivisionMarkdownNodes(DivisionTransform, context) {
265
- const divisionMarkdownNode = this, //
266
- subDivisionTransforms = this.findDivisionTransforms(DivisionTransform, context);
269
+ includeDirectiveMarkdownTransforms.forEach((includeDirectiveMarkdownTransform) => {
270
+ const divisionMarkdownNode = includeDirectiveMarkdownTransform.appendToTopmostMarkdownNode(topmostMarkdownNode, context);
267
271
 
268
- subDivisionTransforms.forEach((subDivisionTransform) => {
269
- subDivisionTransform.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
272
+ divisionMarkdownNode.resolveIncludes(topmostMarkdownNode, context);
270
273
  });
271
-
272
- return subDivisionTransforms;
273
274
  }
274
275
 
275
- createFootnotesListTransform(footnoteTransformMap, context) {
276
- const footnoteDivisionTransforms = this.findDivisionTransforms(FootnoteDivisionTransform, context);
276
+ resolveEmbeddings(context) {
277
+ const divisionMarkdownNode = this; ///
277
278
 
278
- footnoteDivisionTransforms.forEach((footnoteDivisionTransform) => {
279
- const footnoteTransform = FootnoteTransform.fromFootnoteDivisionTransform(footnoteDivisionTransform),
280
- identifier = footnoteDivisionTransform.identifier(context);
279
+ this.forEachSubDivisionMarkdownNode((subDivisionMarkdownNode) => {
280
+ const embeddingsResolved = subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
281
281
 
282
- footnoteTransformMap[identifier] = footnoteTransform;
283
- });
282
+ if (embeddingsResolved) {
283
+ const subDivisionTransform = SubDivisionTransform.fromSubDivisionMarkdownNode(subDivisionMarkdownNode)
284
284
 
285
- const divisionMarkdownNode = this, ///
286
- footnotesListDivisionTransform = FootnotesListTransform.fromDivisionMarkdownNodeAndFootnoteTransformMap(divisionMarkdownNode, footnoteTransformMap, context);
287
-
288
- return footnotesListDivisionTransform;
285
+ subDivisionTransform.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
286
+ }
287
+ });
289
288
  }
290
289
 
291
- clone() { return super.clone(this.divisionClassName); }
292
-
293
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(DivisionMarkdownNode, ruleName, childNodes, opacity); }
294
- }
290
+ getSubDivisionMarkdownNodes() {
291
+ const node = this,
292
+ subDivisionMarkdownNodes = subDivisionMarkdownNodesFromNode(node);
295
293
 
296
- function paginateDivisionMarkdownNode(paginatedChildNodes, subDivisionTransforms, divisionClassName, markdownNodes, pageNumber, context) {
297
- let markdownNode;
294
+ return subDivisionMarkdownNodes;
295
+ }
298
296
 
299
- const indexAnchorTransform = IndexAnchorTransform.fromPageNumber(pageNumber, context),
300
- divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesDivisionTransformsAndDivisionClassName(paginatedChildNodes, subDivisionTransforms, divisionClassName, context),
301
- anchorMarkdownNode = indexAnchorTransform.getAnchorMarkdownNode();
297
+ forEachSubDivisionMarkdownNode(callback) {
298
+ const subDivisionMarkdownNodes = this.getSubDivisionMarkdownNodes();
302
299
 
303
- divisionMarkdownNode.setPageNumber(pageNumber);
300
+ subDivisionMarkdownNodes.forEach(callback);
301
+ }
304
302
 
305
- markdownNode = anchorMarkdownNode; ///
303
+ clone() { return super.clone(this.divisionClassName); }
306
304
 
307
- markdownNodes.push(markdownNode);
305
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
306
+ const divisionClassName = null,
307
+ divisionMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(DivisionMarkdownNode, ruleName, childNodes, opacity, divisionClassName);
308
308
 
309
- markdownNode = divisionMarkdownNode; ///
309
+ return divisionMarkdownNode;
310
+ }
311
+ }
310
312
 
311
- markdownNodes.push(markdownNode);
312
- }
313
+ // function paginateDivisionMarkdownNode(paginatedChildNodes, subDivisionTransforms, divisionClassName, markdownNodes, pageNumber, context) {
314
+ // let markdownNode;
315
+ //
316
+ // const indexAnchorTransform = IndexAnchorTransform.fromPageNumber(pageNumber, context),
317
+ // divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesDivisionTransformsAndDivisionClassName(paginatedChildNodes, subDivisionTransforms, divisionClassName, context),
318
+ // anchorMarkdownNode = indexAnchorTransform.getAnchorMarkdownNode();
319
+ //
320
+ // divisionMarkdownNode.setPageNumber(pageNumber);
321
+ //
322
+ // markdownNode = anchorMarkdownNode; ///
323
+ //
324
+ // markdownNodes.push(markdownNode);
325
+ //
326
+ // markdownNode = divisionMarkdownNode; ///
327
+ //
328
+ // markdownNodes.push(markdownNode);
329
+ // }
@@ -2,11 +2,11 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import MarkdownNode from "../../node/markdown";
6
- import AnchorMarkdownNode from "../../node/markdown/anchor";
5
+ import MarkdownNode from "../../../node/markdown";
6
+ import AnchorMarkdownNode from "../../../node/markdown/anchor";
7
7
 
8
- import { FOOTNOTE_PREPEND } from "../../prepends";
9
- import { FOOTNOTES_ITEM_RULE_NAME } from "../../ruleNames";
8
+ import { FOOTNOTE_PREPEND } from "../../../prepends";
9
+ import { FOOTNOTES_ITEM_RULE_NAME } from "../../../ruleNames";
10
10
 
11
11
  const { first } = arrayUtilities;
12
12
 
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../../node/markdown";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
- import { CONTENTS_LINK_RULE_NAME } from "../../ruleNames";
5
+ import { CONTENTS_LINK_RULE_NAME } from "../../../ruleNames";
6
6
 
7
7
  export default class ContentsLinkMarkdownNode extends MarkdownNode {
8
8
  constructor(ruleName, childNodes, opacity, precedence, domElement, identifier) {
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../../node/markdown";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
- import { EMAIL_ADDRESS_TOKEN_TYPE } from "../../tokenTypes";
5
+ import { EMAIL_ADDRESS_TOKEN_TYPE } from "../../../tokenTypes";
6
6
 
7
7
  export default class EmailLinkMarkdownNode extends MarkdownNode {
8
8
  emailAddressFromSecondLastChildNode(context) {