highmark-markdown 1.0.177 → 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 (76) hide show
  1. package/example.js +1673 -2462
  2. package/lib/example/view/div/preview.js +19 -19
  3. package/lib/example/view/div/sizeable/left.js +2 -2
  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 -8
  7. package/lib/index.js +15 -7
  8. package/lib/map/className.js +4 -45
  9. package/lib/map/node/html.js +12 -5
  10. package/lib/map/node/markdown.js +2 -2
  11. package/lib/map/tagName.js +4 -45
  12. package/lib/node/html/topmost.js +21 -39
  13. package/lib/node/html.js +15 -1
  14. package/lib/node/markdown/directive/embee.js +8 -8
  15. package/lib/node/markdown/directive/include.js +7 -7
  16. package/lib/node/markdown/division.js +21 -220
  17. package/lib/node/markdown/subDivision.js +11 -14
  18. package/lib/node/markdown/topmost.js +3 -3
  19. package/lib/queries.js +4 -3
  20. package/lib/ruleNames.js +11 -6
  21. package/lib/transform/{subDivision/contentsDirective.js → contentsDirective.js} +2 -3
  22. package/lib/transform/contentsList.js +2 -3
  23. package/lib/transform/footnote.js +2 -3
  24. package/lib/transform/{subDivision/footnote.js → footnoteIdentifier.js} +3 -4
  25. package/lib/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +2 -3
  26. package/lib/transform/footnotesList.js +2 -3
  27. package/lib/transform/{subDivision/indexDirective.js → indexDirective.js} +2 -3
  28. package/lib/transform/{embedDirective.js → markdown/directive/embed.js} +12 -12
  29. package/lib/transform/{ignoreDirective.js → markdown/directive/ignore.js} +12 -12
  30. package/lib/transform/{includeDirective.js → markdown/directive/include.js} +12 -12
  31. package/lib/transform/{subDivision.js → markdown/subDivision.js} +12 -12
  32. package/lib/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +2 -3
  33. package/lib/utilities/dom.js +62 -0
  34. package/lib/utilities/footnotes.js +2 -3
  35. package/lib/utilities/html.js +135 -50
  36. package/lib/utilities/index.js +5 -5
  37. package/lib/utilities/markdown.js +89 -0
  38. package/lib/utilities/query.js +17 -129
  39. package/package.json +4 -4
  40. package/src/example/view/div/preview.js +16 -16
  41. package/src/example/view/div/sizeable/left.js +1 -1
  42. package/src/example/view/textarea/plainText.js +2 -2
  43. package/src/example/view/xmp.js +3 -2
  44. package/src/example/view.js +9 -10
  45. package/src/index.js +2 -0
  46. package/src/map/className.js +3 -6
  47. package/src/map/node/html.js +14 -2
  48. package/src/map/node/markdown.js +2 -2
  49. package/src/map/tagName.js +3 -6
  50. package/src/node/html/topmost.js +16 -47
  51. package/src/node/html.js +12 -0
  52. package/src/node/markdown/directive/embee.js +5 -5
  53. package/src/node/markdown/directive/include.js +5 -5
  54. package/src/node/markdown/division.js +128 -135
  55. package/src/node/markdown/subDivision.js +7 -10
  56. package/src/node/markdown/topmost.js +1 -1
  57. package/src/queries.js +5 -3
  58. package/src/ruleNames.js +4 -2
  59. package/src/transform/{subDivision/contentsDirective.js → contentsDirective.js} +0 -2
  60. package/src/transform/contentsList.js +0 -1
  61. package/src/transform/footnote.js +0 -2
  62. package/src/transform/{subDivision/footnote.js → footnoteIdentifier.js} +0 -2
  63. package/src/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +0 -2
  64. package/src/transform/footnotesList.js +0 -2
  65. package/src/transform/{subDivision/indexDirective.js → indexDirective.js} +0 -2
  66. package/src/transform/{embedDirective.js → markdown/directive/embed.js} +3 -3
  67. package/src/transform/{ignoreDirective.js → markdown/directive/ignore.js} +3 -3
  68. package/src/transform/{includeDirective.js → markdown/directive/include.js} +3 -3
  69. package/src/transform/{subDivision.js → markdown/subDivision.js} +3 -3
  70. package/src/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +0 -2
  71. package/src/utilities/dom.js +58 -0
  72. package/src/utilities/footnotes.js +0 -2
  73. package/src/utilities/html.js +122 -49
  74. package/src/utilities/index.js +4 -4
  75. package/src/utilities/markdown.js +72 -0
  76. package/src/utilities/query.js +12 -122
package/src/index.js CHANGED
@@ -5,9 +5,11 @@ export { default as MarkdownParser } from "./markdown/parser";
5
5
  export { default as MarkdownStyleLexer } from "./markdownStyle/lexer";
6
6
  export { default as MarkdownStyleParser } from "./markdownStyle/parser";
7
7
 
8
+ export { default as domUtilities } from "./utilities/dom";
8
9
  export { default as cssUtilities } from "./utilities/css";
9
10
  export { default as htmlUtilities } from "./utilities/html";
10
11
  export { default as queryUtilities } from "./utilities/query";
12
+ export { default as markdownUtilities } from "./utilities/markdown";
11
13
  export { default as footnotesUtilities } from "./utilities/footnotes";
12
14
 
13
15
  export { default as ruleNames } from "./ruleNames";
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import htmlNodeMap from "../map/node/html";
4
-
5
- import { ruleNames } from "../map/node/html";
3
+ import { forEachHTMLNode } from "../map/node/html";
6
4
 
7
5
  const classNameMap = {};
8
6
 
9
- ruleNames.forEach((ruleName) => {
10
- const Class = htmlNodeMap[ruleName],
11
- { className } = Class;
7
+ forEachHTMLNode((Class, ruleName) => {
8
+ const { className } = Class;
12
9
 
13
10
  classNameMap[ruleName] = className;
14
11
  });
@@ -5,6 +5,7 @@ import ErrorHTMLNode from "../../node/html/error";
5
5
  import ImageHTMLNode from "../../node/html/image";
6
6
  import TableHTMLNode from "../../node/html/table";
7
7
  import AnchorHTMLNode from "../../node/html/anchor";
8
+ import TopmostHTMLNode from "../../node/html/topmost";
8
9
  import DivisionHTMLNode from "../../node/html/division";
9
10
  import ParagraphHTMLNode from "../../node/html/paragraph";
10
11
  import TableHeadHTMLNode from "../../node/html/tableHead";
@@ -43,7 +44,8 @@ import SecondaryHeadingHTMLNode from "../../node/html/heading/secondary";
43
44
  import QuaternaryHeadingHTMLNode from "../../node/html/heading/quaternary";
44
45
  import StronglyEmphasisedTextHTMLNode from "../../node/html/text/stronglyEmphasised";
45
46
 
46
- import { LINE_RULE_NAME,
47
+ import { HTML_RULE_NAME,
48
+ LINE_RULE_NAME,
47
49
  ERROR_RULE_NAME,
48
50
  IMAGE_RULE_NAME,
49
51
  TABLE_RULE_NAME,
@@ -87,6 +89,7 @@ import { LINE_RULE_NAME,
87
89
  STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "../../ruleNames";
88
90
 
89
91
  const htmlNodeMap = {
92
+ [HTML_RULE_NAME]: TopmostHTMLNode, ///
90
93
  [LINE_RULE_NAME]: LineHTMLNode,
91
94
  [ERROR_RULE_NAME]: ErrorHTMLNode,
92
95
  [IMAGE_RULE_NAME]: ImageHTMLNode,
@@ -131,6 +134,15 @@ const htmlNodeMap = {
131
134
  [STRONGLY_EMPHASISED_TEXT_RULE_NAME]: StronglyEmphasisedTextHTMLNode
132
135
  }
133
136
 
134
- export const ruleNames = Object.keys(htmlNodeMap);
137
+ export function forEachHTMLNode(callback) {
138
+ const ruleNames = Object.keys(htmlNodeMap);
139
+
140
+ ruleNames.forEach((ruleName) => {
141
+ const HTMLNode = htmlNodeMap[ruleName],
142
+ Class = HTMLNode;
143
+
144
+ callback(Class, ruleName);
145
+ });
146
+ }
135
147
 
136
148
  export default htmlNodeMap;
@@ -46,7 +46,7 @@ import { LINE_RULE_NAME,
46
46
  IMAGE_RULE_NAME,
47
47
  ERROR_RULE_NAME,
48
48
  ANCHOR_RULE_NAME,
49
- TOPMOST_RULE_NAME,
49
+ MARKDOWN_RULE_NAME,
50
50
  DIVISION_RULE_NAME,
51
51
  FOOTNOTE_RULE_NAME,
52
52
  BLOCK_END_RULE_NAME,
@@ -88,7 +88,7 @@ const markdownNodeMap = {
88
88
  [IMAGE_RULE_NAME]: ImageMarkdownNode,
89
89
  [ERROR_RULE_NAME]: ErrorMarkdownNode,
90
90
  [ANCHOR_RULE_NAME]: AnchorMarkdownNode,
91
- [TOPMOST_RULE_NAME]: TopmostMarkdownNode,
91
+ [MARKDOWN_RULE_NAME]: TopmostMarkdownNode,
92
92
  [DIVISION_RULE_NAME]: DivisionMarkdownNode,
93
93
  [FOOTNOTE_RULE_NAME]: FootnoteMarkdownNode,
94
94
  [BLOCK_END_RULE_NAME]: BlockEndMarkdownNode,
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import htmlNodeMap from "../map/node/html";
4
-
5
- import { ruleNames } from "../map/node/html";
3
+ import { forEachHTMLNode } from "../map/node/html";
6
4
 
7
5
  const tagNameMap = {};
8
6
 
9
- ruleNames.forEach((ruleName) => {
10
- const Class = htmlNodeMap[ruleName],
11
- { tagName } = Class;
7
+ forEachHTMLNode((Class, ruleName) => {
8
+ const { tagName } = Class;
12
9
 
13
10
  tagNameMap[ruleName] = tagName;
14
11
  });
@@ -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,9 +2,9 @@
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
6
 
7
- import { divisionMarkdownNodeFromNode, subDivisionMarkdownNodeFromNode } from "../../../utilities/query";
7
+ import { divisionMarkdownNodeFromNode, subDivisionMarkdownNodeFromNode } from "../../../utilities/markdown";
8
8
 
9
9
  export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
10
10
  filePath(context) {
@@ -27,7 +27,7 @@ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
27
27
  }
28
28
 
29
29
  resolveEmbedding(context) {
30
- let embedDirectiveTransform = null;
30
+ let embedDirectiveMarkdownTransform = null;
31
31
 
32
32
  const filePath = this.filePath(context);
33
33
 
@@ -54,13 +54,13 @@ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
54
54
  if (subDivisionMarkdownNode !== null) {
55
55
  divisionMarkdownNode.removeSubDivisionMarkdownNode(subDivisionMarkdownNode);
56
56
 
57
- embedDirectiveTransform = EmbedDirectiveTransform.fromSubDivisionMarkdownNodeAndTokens(subDivisionMarkdownNode, tokens);
57
+ embedDirectiveMarkdownTransform = EmbedDirectiveMarkdownTransform.fromSubDivisionMarkdownNodeAndTokens(subDivisionMarkdownNode, tokens);
58
58
  }
59
59
  }
60
60
  }
61
61
  }
62
62
 
63
- return embedDirectiveTransform;
63
+ return embedDirectiveMarkdownTransform;
64
64
  }
65
65
 
66
66
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
@@ -2,9 +2,9 @@
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
6
 
7
- import { divisionMarkdownNodeFromNode } from "../../../utilities/query";
7
+ import { divisionMarkdownNodeFromNode } from "../../../utilities/markdown";
8
8
 
9
9
  export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
10
10
  filePath(context) {
@@ -27,7 +27,7 @@ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
27
27
  }
28
28
 
29
29
  resolveInclude(context) {
30
- let includeDirectiveTransform = null;
30
+ let includeDirectiveMarkdownTransform = null;
31
31
 
32
32
  const filePath = this.filePath(context);
33
33
 
@@ -57,12 +57,12 @@ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
57
57
 
58
58
  divisionMarkdownNode.setDivisionClassName(divisionClassName);
59
59
 
60
- includeDirectiveTransform = IncludeDirectiveTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
60
+ includeDirectiveMarkdownTransform = IncludeDirectiveMarkdownTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
61
61
  }
62
62
  }
63
63
  }
64
64
 
65
- return includeDirectiveTransform;
65
+ return includeDirectiveMarkdownTransform;
66
66
  }
67
67
 
68
68
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
@@ -1,93 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
- import FootnoteTransform from "../../transform/footnote";
5
- import SubDivisionTransform from "../../transform/subDivision";
6
- import FootnotesListTransform from "../../transform/footnotesList";
7
- import IgnoreDirectiveTransform from "../../transform/ignoreDirective";
8
- import FootnoteDivisionTransform from "../../transform/subDivision/footnote";
4
+ import IgnoreDirectiveMarkdownTransform from "../../transform/markdown/directive/ignore";
9
5
 
10
- import { subDivisionMarkdownNodesFromNode,
11
- ignoreDirectiveMarkdownNodeFromNode,
12
- includeDirectiveMarkdownNodesFromNode,
13
- pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
6
+ import { ignoreDirectiveMarkdownNodeFromNode, subDivisionMarkdownNodesFromNode, includeDirectiveMarkdownNodesFromNode } from "../../utilities/markdown";
14
7
 
15
8
  export default class DivisionMarkdownNode extends MarkdownNode {
16
- constructor(ruleName, parentNode, childNodes, opacity, precedence, divisionClassName) {
17
- super(ruleName, parentNode, childNodes, opacity, precedence);
18
-
19
- this.divisionClassName = divisionClassName;
20
- }
21
-
22
- getDivisionClassName() {
23
- return this.divisionClassName;
24
- }
25
-
26
- setDivisionClassName(divisionClassName) {
27
- this.divisionClassName = divisionClassName;
28
- }
29
-
30
- className(context) {
31
- const className = this.divisionClassName; ///
32
-
33
- return className;
34
- }
35
-
36
- isIgnored() {
37
- const node = this, ///
38
- ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
39
- ignored = (ignoreDirectiveMarkdownNode !== null);
40
-
41
- return ignored;
42
- }
43
-
44
- resolveIgnored(topmostMarkdownNode, context) {
45
- const ignored = this.isIgnored();
46
-
47
- if (!ignored) {
48
- return;
49
- }
50
-
51
- const divisionMarkdownNode = this, ///
52
- ignoreDirectiveTransform = IgnoreDirectiveTransform.fromDivisionMarkdownNode(divisionMarkdownNode);
53
-
54
- ignoreDirectiveTransform.removeFromTopmostMarkdownNode(topmostMarkdownNode, context);
55
- }
56
-
57
- resolveIncludes(topmostMarkdownNode, context) {
58
- const node = this, ///
59
- includeDirectiveMarkdownNodes = includeDirectiveMarkdownNodesFromNode(node),
60
- includeDirectiveTransforms = includeDirectiveMarkdownNodes.reduce((includeDirectiveTransforms, includeDirectiveMarkdownNode) => {
61
- const includeDirectiveTransform = includeDirectiveMarkdownNode.resolveInclude(context);
62
-
63
- if (includeDirectiveTransform !== null) {
64
- includeDirectiveTransforms.push(includeDirectiveTransform);
65
- }
66
-
67
- return includeDirectiveTransforms;
68
- }, []);
69
-
70
- includeDirectiveTransforms.forEach((includeDirectiveTransform) => {
71
- const divisionMarkdownNode = includeDirectiveTransform.appendToTopmostMarkdownNode(topmostMarkdownNode, context);
72
-
73
- divisionMarkdownNode.resolveIncludes(topmostMarkdownNode, context);
74
- });
75
- }
76
-
77
- resolveEmbeddings(context) {
78
- const divisionMarkdownNode = this; ///
79
-
80
- this.forEachSubDivisionMarkdownNode((subDivisionMarkdownNode) => {
81
- const embeddingsResolved = subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
82
-
83
- if (embeddingsResolved) {
84
- const subDivisionTransform = SubDivisionTransform.fromSubDivisionMarkdownNode(subDivisionMarkdownNode)
85
-
86
- subDivisionTransform.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
87
- }
88
- });
89
- }
90
-
91
9
  // getPageNumber() {
92
10
  // let pageNumber = null;
93
11
  //
@@ -222,54 +140,151 @@ export default class DivisionMarkdownNode extends MarkdownNode {
222
140
  // footnoteTransformMap[identifier] = footnoteTransform;
223
141
  // });
224
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
+ // }
225
214
 
226
- findDivisionTransform(DivisionTransform, context) {
227
- let subDivisionTransform = null;
215
+ constructor(ruleName, parentNode, childNodes, opacity, precedence, divisionClassName) {
216
+ super(ruleName, parentNode, childNodes, opacity, precedence);
228
217
 
229
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
218
+ this.divisionClassName = divisionClassName;
219
+ }
230
220
 
231
- subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
232
- subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
221
+ getDivisionClassName() {
222
+ return this.divisionClassName;
223
+ }
233
224
 
234
- if (subDivisionTransform !== null) {
235
- return true;
236
- }
237
- });
225
+ setDivisionClassName(divisionClassName) {
226
+ this.divisionClassName = divisionClassName;
227
+ }
228
+
229
+ isIgnored() {
230
+ const node = this, ///
231
+ ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
232
+ ignored = (ignoreDirectiveMarkdownNode !== null);
238
233
 
239
- return subDivisionTransform;
234
+ return ignored;
240
235
  }
241
236
 
242
- findDivisionTransforms(DivisionTransform, context) {
243
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes(),
244
- subDivisionTransforms = subDivisionMarkdownNodes.reduce((subDivisionTransforms, subDivisionMarkdownNode) => {
245
- const subDivisionTransform = DivisionTransform.fromDivisionMarkdownNode(subDivisionMarkdownNode, context);
237
+ className(context) {
238
+ const className = this.divisionClassName; ///
246
239
 
247
- if (subDivisionTransform !== null) {
248
- subDivisionTransforms.push(subDivisionTransform);
240
+ return className;
241
+ }
242
+
243
+ resolveIgnored(topmostMarkdownNode, context) {
244
+ const ignored = this.isIgnored();
245
+
246
+ if (!ignored) {
247
+ return;
248
+ }
249
+
250
+ const divisionMarkdownNode = this, ///
251
+ ignoreDirectiveMarkdownTransform = IgnoreDirectiveMarkdownTransform.fromDivisionMarkdownNode(divisionMarkdownNode);
252
+
253
+ ignoreDirectiveMarkdownTransform.removeFromTopmostMarkdownNode(topmostMarkdownNode, context);
254
+ }
255
+
256
+ resolveIncludes(topmostMarkdownNode, context) {
257
+ const node = this, ///
258
+ includeDirectiveMarkdownNodes = includeDirectiveMarkdownNodesFromNode(node),
259
+ includeDirectiveMarkdownTransforms = includeDirectiveMarkdownNodes.reduce((includeDirectiveMarkdownTransforms, includeDirectiveMarkdownNode) => {
260
+ const includeDirectiveMarkdownTransform = includeDirectiveMarkdownNode.resolveInclude(context);
261
+
262
+ if (includeDirectiveMarkdownTransform !== null) {
263
+ includeDirectiveMarkdownTransforms.push(includeDirectiveMarkdownTransform);
249
264
  }
250
265
 
251
- return subDivisionTransforms;
266
+ return includeDirectiveMarkdownTransforms;
252
267
  }, []);
253
268
 
254
- return subDivisionTransforms;
255
- }
269
+ includeDirectiveMarkdownTransforms.forEach((includeDirectiveMarkdownTransform) => {
270
+ const divisionMarkdownNode = includeDirectiveMarkdownTransform.appendToTopmostMarkdownNode(topmostMarkdownNode, context);
256
271
 
257
- findPageNumberDirectiveMarkdownNode() {
258
- let pageNumberDirectiveMarkdownNode = null;
272
+ divisionMarkdownNode.resolveIncludes(topmostMarkdownNode, context);
273
+ });
274
+ }
259
275
 
260
- const subDivisionMarkdownNodes = this.findDivisionMarkdownNodes();
276
+ resolveEmbeddings(context) {
277
+ const divisionMarkdownNode = this; ///
261
278
 
262
- subDivisionMarkdownNodes.some((subDivisionMarkdownNode) => {
263
- const node = subDivisionMarkdownNode; ///
279
+ this.forEachSubDivisionMarkdownNode((subDivisionMarkdownNode) => {
280
+ const embeddingsResolved = subDivisionMarkdownNode.resolveEmbeddings(divisionMarkdownNode, context);
264
281
 
265
- pageNumberDirectiveMarkdownNode = pageNumberDirectiveMarkdownNodeFromNode(node);
282
+ if (embeddingsResolved) {
283
+ const subDivisionTransform = SubDivisionTransform.fromSubDivisionMarkdownNode(subDivisionMarkdownNode)
266
284
 
267
- if (pageNumberDirectiveMarkdownNode !== null) {
268
- return true;
285
+ subDivisionTransform.removeFromDivisionMarkdownNode(divisionMarkdownNode, context);
269
286
  }
270
287
  });
271
-
272
- return pageNumberDirectiveMarkdownNode;
273
288
  }
274
289
 
275
290
  getSubDivisionMarkdownNodes() {
@@ -285,28 +300,6 @@ export default class DivisionMarkdownNode extends MarkdownNode {
285
300
  subDivisionMarkdownNodes.forEach(callback);
286
301
  }
287
302
 
288
- removeSubDivisionMarkdownNode(subDivisionMarkdownNode) {
289
- const childNode = subDivisionMarkdownNode; ///
290
-
291
- this.removeChildNode(childNode);
292
- }
293
-
294
- createFootnotesListTransform(footnoteTransformMap, context) {
295
- const footnoteDivisionTransforms = this.findDivisionTransforms(FootnoteDivisionTransform, context);
296
-
297
- footnoteDivisionTransforms.forEach((footnoteDivisionTransform) => {
298
- const footnoteTransform = FootnoteTransform.fromFootnoteDivisionTransform(footnoteDivisionTransform),
299
- identifier = footnoteDivisionTransform.identifier(context);
300
-
301
- footnoteTransformMap[identifier] = footnoteTransform;
302
- });
303
-
304
- const divisionMarkdownNode = this, ///
305
- footnotesListDivisionTransform = FootnotesListTransform.fromDivisionMarkdownNodeAndFootnoteTransformMap(divisionMarkdownNode, footnoteTransformMap, context);
306
-
307
- return footnotesListDivisionTransform;
308
- }
309
-
310
303
  clone() { return super.clone(this.divisionClassName); }
311
304
 
312
305
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
@@ -3,11 +3,8 @@
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
- import FootnoteTransform from "../../transform/footnote";
7
- import FootnotesListTransform from "../../transform/footnotesList";
8
- import FootnoteDivisionTransform from "../../transform/subDivision/footnote";
9
6
 
10
- import { embedDirectiveMarkdownNodesFromNode } from "../../utilities/query";
7
+ import { embedDirectiveMarkdownNodesFromNode } from "../../utilities/markdown";
11
8
 
12
9
  const { backwardsForEach } = arrayUtilities;
13
10
 
@@ -17,21 +14,21 @@ export default class SubDivisionMarkdownNode extends MarkdownNode {
17
14
 
18
15
  const node = this, ///
19
16
  embedDirectiveMarkdownNodes = embedDirectiveMarkdownNodesFromNode(node),
20
- embedDirectiveTransforms = embedDirectiveMarkdownNodes.reduce((embedDirectiveTransforms, embedDirectiveMarkdownNode) => {
17
+ embedDirectiveMarkdownTransforms = embedDirectiveMarkdownNodes.reduce((embedDirectiveMarkdownTransforms, embedDirectiveMarkdownNode) => {
21
18
  const embedDirectiveTransform = embedDirectiveMarkdownNode.resolveEmbedding(context);
22
19
 
23
20
  if (embedDirectiveTransform !== null) {
24
- embedDirectiveTransforms.push(embedDirectiveTransform);
21
+ embedDirectiveMarkdownTransforms.push(embedDirectiveTransform);
25
22
  }
26
23
 
27
- return embedDirectiveTransforms;
24
+ return embedDirectiveMarkdownTransforms;
28
25
  }, []),
29
- embedDirectiveTransformsLength = embedDirectiveTransforms.length;
26
+ embedDirectiveMarkdownTransformsLength = embedDirectiveMarkdownTransforms.length;
30
27
 
31
- if (embedDirectiveTransformsLength > 0) {
28
+ if (embedDirectiveMarkdownTransformsLength > 0) {
32
29
  const subDivisionMarkdownNode = this; ///
33
30
 
34
- backwardsForEach(embedDirectiveTransforms, (embedDirectiveTransform) => {
31
+ backwardsForEach(embedDirectiveMarkdownTransforms, (embedDirectiveTransform) => {
35
32
  embedDirectiveTransform.addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode, divisionMarkdownNode, context);
36
33
  });
37
34
 
@@ -4,7 +4,7 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
6
 
7
- import { divisionMarkdownNodesFromNode } from "../../utilities/query";
7
+ import { divisionMarkdownNodesFromNode } from "../../utilities/markdown";
8
8
 
9
9
  const { first } = arrayUtilities;
10
10
 
package/src/queries.js CHANGED
@@ -2,13 +2,15 @@
2
2
 
3
3
  import { Query } from "occam-query";
4
4
 
5
- import { ruleNames } from "./map/node//html";
5
+ import { forEachHTMLNode } from "./map/node//html";
6
6
 
7
- const queries = ruleNames.map((ruleName) => {
7
+ const queries = [];
8
+
9
+ forEachHTMLNode((Class, ruleName) => {
8
10
  const expressionString = `//${ruleName}`,
9
11
  query = Query.fromExpressionString(expressionString);
10
12
 
11
- return query;
13
+ queries.push(query);
12
14
  });
13
15
 
14
16
  export default queries;