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
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import MarkdownNode from "../../node/markdown";
5
+ import MarkdownNode from "../../../node/markdown";
6
6
 
7
- import { EMPTY_STRING } from "../../constants";
7
+ import { EMPTY_STRING } from "../../../constants";
8
8
 
9
9
  const { second } = arrayUtilities;
10
10
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../../node/markdown";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
5
  export default class IndexLinkMarkdownNode extends MarkdownNode {
6
6
  // content(context) {
@@ -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_LIST_RULE_NAME } from "../../ruleNames";
5
+ import { CONTENTS_LIST_RULE_NAME } from "../../../ruleNames";
6
6
 
7
7
  export default class ContentsListMarkdownNode extends MarkdownNode {
8
8
  static fromContentsItemReplacements(contentsItemReplacements) {
@@ -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 { FOOTNOTES_LIST_RULE_NAME } from "../../ruleNames";
5
+ import { FOOTNOTES_LIST_RULE_NAME } from "../../../ruleNames";
6
6
 
7
7
  export default class FootnotesListMarkdownNode extends MarkdownNode {
8
8
  constructor(ruleName, childNodes, opacity, precedence, domElement, start) {
@@ -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 { INDEX_LIST_RULE_NAME } from "../../ruleNames";
5
+ import { INDEX_LIST_RULE_NAME } from "../../../ruleNames";
6
6
 
7
7
  export default class IndexListMarkdownNode extends MarkdownNode {
8
8
  static fromIndexItemReplacements(indexItemReplacements) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../../node/markdown";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
5
  export default class BlockListingMarkdownNode extends MarkdownNode {
6
6
  className(context) {
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import MarkdownNode from "../../../node/markdown";
4
+
5
+ import { removeBackticks } from "../../../utilities/string";
6
+ import { replaceEntities } from "../../../utilities/entities";
7
+
8
+ export default class InlineListingMarkdownNode extends MarkdownNode {
9
+ content(context) {
10
+ const content = this.fromFirstChildNode((firstChildNode) => {
11
+ let content;
12
+
13
+ const backtickedLiteralTerminalNode = firstChildNode; ///
14
+
15
+ content = backtickedLiteralTerminalNode.getContent();
16
+
17
+ content = removeBackticks(content); ///
18
+
19
+ content = replaceEntities(content); ///
20
+
21
+ return content;
22
+ });
23
+
24
+ return content;
25
+ }
26
+
27
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(InlineListingMarkdownNode, ruleName, childNodes, opacity); }
28
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import { arrayUtilities } from "necessary";
4
+
5
+ import MarkdownNode from "../../node/markdown";
6
+
7
+ import { embedDirectiveMarkdownNodesFromNode } from "../../utilities/markdown";
8
+
9
+ const { backwardsForEach } = arrayUtilities;
10
+
11
+ export default class SubDivisionMarkdownNode extends MarkdownNode {
12
+ resolveEmbeddings(divisionMarkdownNode, context) {
13
+ let embeddingsResolved = false;
14
+
15
+ const node = this, ///
16
+ embedDirectiveMarkdownNodes = embedDirectiveMarkdownNodesFromNode(node),
17
+ embedDirectiveMarkdownTransforms = embedDirectiveMarkdownNodes.reduce((embedDirectiveMarkdownTransforms, embedDirectiveMarkdownNode) => {
18
+ const embedDirectiveTransform = embedDirectiveMarkdownNode.resolveEmbedding(context);
19
+
20
+ if (embedDirectiveTransform !== null) {
21
+ embedDirectiveMarkdownTransforms.push(embedDirectiveTransform);
22
+ }
23
+
24
+ return embedDirectiveMarkdownTransforms;
25
+ }, []),
26
+ embedDirectiveMarkdownTransformsLength = embedDirectiveMarkdownTransforms.length;
27
+
28
+ if (embedDirectiveMarkdownTransformsLength > 0) {
29
+ const subDivisionMarkdownNode = this; ///
30
+
31
+ backwardsForEach(embedDirectiveMarkdownTransforms, (embedDirectiveTransform) => {
32
+ embedDirectiveTransform.addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode, divisionMarkdownNode, context);
33
+ });
34
+
35
+ embeddingsResolved = true;
36
+ }
37
+
38
+ return embeddingsResolved;
39
+ }
40
+
41
+ createFootnotesListTransform(footnoteTransformMap, context) {
42
+ const footnoteDivisionTransforms = this.findDivisionTransforms(FootnoteDivisionTransform, context);
43
+
44
+ footnoteDivisionTransforms.forEach((footnoteDivisionTransform) => {
45
+ const footnoteTransform = FootnoteTransform.fromFootnoteDivisionTransform(footnoteDivisionTransform),
46
+ identifier = footnoteDivisionTransform.identifier(context);
47
+
48
+ footnoteTransformMap[identifier] = footnoteTransform;
49
+ });
50
+
51
+ const divisionMarkdownNode = this, ///
52
+ footnotesListDivisionTransform = FootnotesListTransform.fromDivisionMarkdownNodeAndFootnoteTransformMap(divisionMarkdownNode, footnoteTransformMap, context);
53
+
54
+ return footnotesListDivisionTransform;
55
+ }
56
+
57
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(SubDivisionMarkdownNode, ruleName, childNodes, opacity); }
58
+ }
@@ -1,90 +1,60 @@
1
1
  "use strict";
2
2
 
3
+ import { arrayUtilities } from "necessary";
4
+
3
5
  import MarkdownNode from "../../node/markdown";
4
- import DivisionMarkdownNode from "../../node/markdown/division";
6
+
7
+ import { divisionMarkdownNodesFromNode } from "../../utilities/markdown";
8
+
9
+ const { first } = arrayUtilities;
5
10
 
6
11
  export default class TopmostMarkdownNode extends MarkdownNode {
7
12
  resolve(context) {
8
- // this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
9
- // divisionMarkdownNode.resolveIncludes(context);
10
- // });
13
+ const firstDivisionMarkdownNode = this.getFirstDivisionMarkdownNode();
11
14
 
12
- this.filterDivisionMarkdownNode((divisionMarkdownNode) => {
13
- const ignored = divisionMarkdownNode.isIgnored();
15
+ if (firstDivisionMarkdownNode === null) {
16
+ return;
17
+ }
14
18
 
15
- if (!ignored) {
16
- return true;
17
- }
18
- });
19
+ const topmostMarkdownNode = this; ///
19
20
 
20
- // this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
21
- // divisionMarkdownNode.resolveEmbeddings(context);
22
- // });
23
- }
21
+ firstDivisionMarkdownNode.resolveIncludes(topmostMarkdownNode, context);
24
22
 
25
- getDivisionMarkdownNodeAt(index) {
26
- const divisionNodeIndex = index, ///
27
- divisionMarkdownNode = this.findDivisionMarkdownNode((childNode, index) => {
28
- const childNodeIndex = index; ///
29
-
30
- if (childNodeIndex === divisionNodeIndex) {
31
- return true;
32
- }
33
- });
23
+ this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
24
+ divisionMarkdownNode.resolveIgnored(topmostMarkdownNode, context);
25
+ });
34
26
 
35
- return divisionMarkdownNode;
27
+ this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
28
+ divisionMarkdownNode.resolveEmbeddings(context);
29
+ });
36
30
  }
37
31
 
38
- findDivisionMarkdownNode(callback) {
39
- let index = 0;
40
-
41
- const divisionMarkdownNode = this.findChildNode((childNode) => {
42
- const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
32
+ getDivisionMarkdownNodes() {
33
+ const node = this, ///
34
+ divisionMarkdownNodes = divisionMarkdownNodesFromNode(node);
43
35
 
44
- if (childNodeDivisionMarkdownNode) {
45
- const divisionMarkNode = childNode, ///
46
- result = callback(divisionMarkNode, index);
47
-
48
- if (result) {
49
- return true;
50
- }
51
-
52
- index++;
53
- }
54
- });
55
-
56
- return divisionMarkdownNode;
36
+ return divisionMarkdownNodes;
57
37
  }
58
38
 
59
- filterDivisionMarkdownNode(callback) {
60
- this.filterChildNode((childNode) => {
61
- const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
39
+ getFirstDivisionMarkdownNode() {
40
+ const divisionMarkdownNodes = this.getDivisionMarkdownNodes(),
41
+ firstDivisionMarkdownNode = first(divisionMarkdownNodes) || null;
62
42
 
63
- if (!childNodeDivisionMarkdownNode) {
64
- return true;
65
- }
43
+ return firstDivisionMarkdownNode;
44
+ }
66
45
 
67
- if (childNodeDivisionMarkdownNode) {
68
- const divisionMarkNode = childNode, ///
69
- result = callback(divisionMarkNode);
46
+ forEachDivisionMarkdownNode(callback) {
47
+ const divisionMarkdownNodes = this.getDivisionMarkdownNodes();
70
48
 
71
- if (result) {
72
- return true;
73
- }
74
- }
49
+ divisionMarkdownNodes.forEach((divisionMarkdownNode) => {
50
+ callback(divisionMarkdownNode);
75
51
  });
76
52
  }
77
53
 
78
- forEachDivisionMarkdownNode(callback) {
79
- this.forEachChildNode((childNode) => {
80
- const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
81
-
82
- if (childNodeDivisionMarkdownNode) {
83
- const divisionMarkNode = childNode; ///
54
+ removeDivisionMarkdownNode(divisionMarkdownNode) {
55
+ const childNode = divisionMarkdownNode; ///
84
56
 
85
- callback(divisionMarkNode);
86
- }
87
- });
57
+ this.removeChildNode(childNode);
88
58
  }
89
59
 
90
60
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TopmostMarkdownNode, ruleName, childNodes, opacity); }
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;
package/src/ruleNames.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ export const HTML_RULE_NAME = "html";
3
4
  export const LINE_RULE_NAME = "line";
4
5
  export const PATH_RULE_NAME = "path";
5
6
  export const IMAGE_RULE_NAME = "image";
@@ -8,7 +9,7 @@ export const ERROR_RULE_NAME = "error";
8
9
  export const COMMA_RULE_NAME = "comma";
9
10
  export const ANCHOR_RULE_NAME = "anchor";
10
11
  export const FOOTER_RULE_NAME = "footer";
11
- export const TOPMOST_RULE_NAME = "markdown"; ///
12
+ export const MARKDOWN_RULE_NAME = "markdown";
12
13
  export const DIVISION_RULE_NAME = "division";
13
14
  export const FOOTNOTE_RULE_NAME = "footnote";
14
15
  export const NONSENSE_RULE_NAME = "nonsense";
@@ -35,6 +36,7 @@ export const STRONG_TEXT_RULE_NAME = "strongText";
35
36
  export const FOOTER_LINK_RULE_NAME = "footerLink";
36
37
  export const ORDERED_LIST_RULE_NAME = "orderedList";
37
38
  export const ORDERED_ITEM_RULE_NAME = "orderedItem";
39
+ export const SUB_DIVISION_RULE_NAME = "subDivision";
38
40
  export const INDEX_HEADING_RULE_NAME = "indexHeading";
39
41
  export const BLOCK_LISTING_RULE_NAME = "blockListing";
40
42
  export const CONTENTS_LINK_RULE_NAME = "contentsLink";
@@ -69,6 +71,7 @@ export const PAGE_NUMBER_DIRECTIVE_RULE_NAME = "pageNumberDirective";
69
71
  export const STRONGLY_EMPHASISED_TEXT_RULE_NAME = "stronglyEmphasisedText";
70
72
 
71
73
  const ruleNames = {
74
+ HTML_RULE_NAME,
72
75
  LINE_RULE_NAME,
73
76
  PATH_RULE_NAME,
74
77
  COMMA_RULE_NAME,
@@ -76,7 +79,7 @@ const ruleNames = {
76
79
  TABLE_RULE_NAME,
77
80
  ERROR_RULE_NAME,
78
81
  ANCHOR_RULE_NAME,
79
- TOPMOST_RULE_NAME,
82
+ MARKDOWN_RULE_NAME,
80
83
  DIVISION_RULE_NAME,
81
84
  FOOTNOTE_RULE_NAME,
82
85
  NONSENSE_RULE_NAME,
@@ -102,6 +105,7 @@ const ruleNames = {
102
105
  BLOCK_START_RULE_NAME,
103
106
  ORDERED_LIST_RULE_NAME,
104
107
  ORDERED_ITEM_RULE_NAME,
108
+ SUB_DIVISION_RULE_NAME,
105
109
  INDEX_HEADING_RULE_NAME,
106
110
  BLOCK_LISTING_RULE_NAME,
107
111
  CONTENTS_LINK_RULE_NAME,
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SubDivisionTransform from "../division";
4
-
5
- import { contentsDirectiveMarkdownNodeFromNode } from "../../utilities/query";
3
+ import SubDivisionTransform from "../subDivision";
6
4
 
7
5
  export default class ContentsDirectiveSubDivisionTransform extends SubDivisionTransform {
8
6
  static fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context) {
@@ -3,7 +3,7 @@
3
3
  import { Transform } from "occam-dom";
4
4
 
5
5
  import LineTransform from "../transform/line";
6
- import ContentsLinkMarkdownNode from "../node/markdown/contentsLink";
6
+ import ContentsLinkMarkdownNode from "../node/markdown/link/contents";
7
7
 
8
8
  export default class ContentsLinkTransform extends Transform {
9
9
  static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
@@ -4,10 +4,9 @@ import { Transform } from "occam-dom";
4
4
  import { arrayUtilities } from "necessary";
5
5
 
6
6
  import ContentsItemTransform from "../transform/contentsItem";
7
- import ContentsListMarkdownNode from "../node/markdown/contentsList";
7
+ import ContentsListMarkdownNode from "../node/markdown/list/contents";
8
8
 
9
9
  import { nestNodes } from "../utilities/contents";
10
- import { headingMarkdownNodesFromNode } from "../utilities/query";
11
10
 
12
11
  const { filter } = arrayUtilities;
13
12
 
@@ -2,8 +2,6 @@
2
2
 
3
3
  import { Transform } from "occam-dom";
4
4
 
5
- import { footnoteMarkdownNodeFromNode } from "../utilities/query";
6
-
7
5
  export default class FootnoteTransform extends Transform {
8
6
  constructor(node, tokens, number) {
9
7
  super(node, tokens);
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SubDivisionTransform from "../division";
4
-
5
- import { footnoteMarkdownNodeFromNode } from "../../utilities/query";
3
+ import SubDivisionTransform from "../subDivision";
6
4
 
7
5
  export default class FootnoteSubDivisionTransform extends SubDivisionTransform {
8
6
  identifier(context) {
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SubDivisionTransform from "../division";
4
-
5
- import { footnotesDirectiveMarkdownNodeFromNode } from "../../utilities/query";
3
+ import SubDivisionTransform from "../subDivision";
6
4
 
7
5
  export default class FootnotesDirectiveSubDivisionTransform extends SubDivisionTransform {
8
6
  static fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { Transform } from "occam-dom";
4
4
 
5
- import FootnotesItemMarkdownNode from "../node/markdown/footnotesItem";
5
+ import FootnotesItemMarkdownNode from "../node/markdown/item/footnotes";
6
6
 
7
7
  export default class FootnotesItemTransform extends Transform {
8
8
  getFootnotesItemMarkdownNode() {
@@ -3,9 +3,7 @@
3
3
  import { Transform } from "occam-dom";
4
4
 
5
5
  import FootnotesItemTransform from "../transform/footnotesItem";
6
- import FootnotesListMarkdownNode from "../node/markdown/footnotesList";
7
-
8
- import { footnoteLinkMarkdownNodesFromNode } from "../utilities/query";
6
+ import FootnotesListMarkdownNode from "../node/markdown/list/footnotes";
9
7
 
10
8
  export default class FootnotesListTransform extends Transform {
11
9
  replaceFootnotesDirectiveSubDivisionTransform(footnotesDirectiveSubDivisionTransform, divisionMarkdownNode, context) {
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SubDivisionTransform from "../division";
4
-
5
- import { indexDirectiveMarkdownNodeFromNode } from "../../utilities/query";
3
+ import SubDivisionTransform from "../subDivision";
6
4
 
7
5
  export default class IndexDirectiveSubDivisionTransform extends SubDivisionTransform {
8
6
  static fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context) {
@@ -3,7 +3,7 @@
3
3
  import { Transform } from "occam-dom";
4
4
 
5
5
  import IndexItemTransform from "../transform/indexItem";
6
- import IndexListMarkdownNode from "../node/markdown/indexList";
6
+ import IndexListMarkdownNode from "../node/markdown/list/index";
7
7
 
8
8
  export default class IndexListTransform extends Transform {
9
9
  static fromIndexListAndLetter(indexList, letter, context) {
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { Transform } from "occam-dom";
4
+
5
+ export default class EmbedDirectiveMarkdownTransform extends Transform {
6
+ addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode, divisionMarkdownNode, context) {
7
+ const existingNode = subDivisionMarkdownNode, ///
8
+ parentNode = divisionMarkdownNode; ///
9
+
10
+ super.addAfter(existingNode, parentNode, context);
11
+ }
12
+
13
+ static fromSubDivisionMarkdownNodeAndTokens(subDivisionMarkdownNode, tokens) {
14
+ const node = subDivisionMarkdownNode, ///
15
+ embedDirectiveMarkdownTransform = Transform.fromNodeAndTokens(EmbedDirectiveMarkdownTransform, node, tokens);
16
+
17
+ return embedDirectiveMarkdownTransform;
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { Transform } from "occam-dom";
4
+
5
+ export default class IgnoreDirectiveMarkdownTransform extends Transform {
6
+ removeFromTopmostMarkdownNode(topmostMarkdownNode, context) {
7
+ const parentNode = topmostMarkdownNode; ///
8
+
9
+ super.removeFrom(parentNode, context);
10
+ }
11
+
12
+ static fromDivisionMarkdownNode(divisionMarkdownNode) {
13
+ const node = divisionMarkdownNode, ///
14
+ tokens = null,
15
+ ignoredDirectiveMarkdownTransform = Transform.fromNodeAndTokens(IgnoreDirectiveMarkdownTransform, node, tokens);
16
+
17
+ return ignoredDirectiveMarkdownTransform;
18
+ }
19
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import { Transform } from "occam-dom";
4
+
5
+ export default class IncludeDirectiveMarkdownTransform extends Transform {
6
+ getDivisionMarkdownNode() {
7
+ const node = this.getNode(),
8
+ divisionMarkdownNode = node; ///
9
+
10
+ return divisionMarkdownNode;
11
+ }
12
+
13
+ appendToTopmostMarkdownNode(topmostMarkdownNode, context) {
14
+ const parentNode = topmostMarkdownNode; ///
15
+
16
+ super.appendTo(parentNode, context);
17
+
18
+ const divisionMarkdownNode = this.getDivisionMarkdownNode();
19
+
20
+ return divisionMarkdownNode;
21
+ }
22
+
23
+ static fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens) {
24
+ const node = divisionMarkdownNode, ///
25
+ includeDirectiveMarkdownTransform = Transform.fromNodeAndTokens(IncludeDirectiveMarkdownTransform, node, tokens);
26
+
27
+ return includeDirectiveMarkdownTransform;
28
+ }
29
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ import { Transform } from "occam-dom";
4
+
5
+ export default class SubDivisionMarkdownTransform extends Transform {
6
+ constructor(node, tokens, subDivisionMarkdownNode) {
7
+ super(node, tokens);
8
+
9
+ this.subDivisionMarkdownNode = subDivisionMarkdownNode;
10
+ }
11
+
12
+ removeFromDivisionMarkdownNode(divisionMarkdownNode, context) {
13
+ const parentNode = divisionMarkdownNode; ///
14
+
15
+ super.removeFrom(parentNode, context);
16
+ }
17
+
18
+ static fromSubDivisionMarkdownNode(subDivisionMarkdownNode) {
19
+ const node = subDivisionMarkdownNode, ///
20
+ tokens = null,
21
+ subDivisionMarkdownTransform = Transform.fromNodeAndTokens(SubDivisionMarkdownTransform, node, tokens);
22
+
23
+ return subDivisionMarkdownTransform;
24
+ }
25
+ }
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SubDivisionTransform from "../division";
4
-
5
- import { pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
3
+ import SubDivisionTransform from "../subDivision";
6
4
 
7
5
  export default class PageNumberDirectiveSubDivisionTransform extends SubDivisionTransform {
8
6
  static fromSubDivisionMarkdownNode(subDivisionMarkdownNode, context) {
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import { nodeUtilities } from "occam-dom";
4
+
5
+ import queries from "../queries";
6
+ import HTMLNode from "../node/html";
7
+ import htmlNodeMap from "../map/node/html";
8
+ import TopmostHTMLNode from "../node/html/topmost";
9
+
10
+ import { nodesFromNodeAndQueries } from "../utilities/query";
11
+
12
+ const { topmostNodeFromOuterNodes } = nodeUtilities;
13
+
14
+ export function htmlNodeFromMarkdownNode(markdownNode) {
15
+ const node = markdownNode, ///
16
+ nodes = nodesFromNodeAndQueries(node, queries),
17
+ outerNodes = nodes, ///
18
+ topmostNOde = topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes),
19
+ topmostHTMLNode = topmostNOde; ///
20
+
21
+ return topmostHTMLNode;
22
+ }
23
+
24
+ export function htmlNodeFromMarkdownNodes(markdownNodes) {
25
+ const nodes = [];
26
+
27
+ markdownNodes.forEach((markdownNode) => {
28
+ const node = markdownNode; ///
29
+
30
+ nodesFromNodeAndQueries(node, queries, nodes);
31
+ });
32
+
33
+ const outerNodes = nodes, ///
34
+ topmostNOde = topmostNodeFromOuterNodes(ClassFromOuterNode, outerNodes),
35
+ topmostHTMLNode = topmostNOde; ///
36
+
37
+ return topmostHTMLNode;
38
+ }
39
+
40
+ export default {
41
+ htmlNodeFromMarkdownNode,
42
+ htmlNodeFromMarkdownNodes
43
+ };
44
+
45
+ function ClassFromOuterNode(outerNode) {
46
+ let Class;
47
+
48
+ if (outerNode === null) {
49
+ Class = TopmostHTMLNode; ///
50
+ } else {
51
+ const nonTerminalNode = outerNode, ///
52
+ ruleName = nonTerminalNode.getRuleName();
53
+
54
+ Class = htmlNodeMap[ruleName] || HTMLNode;
55
+ }
56
+
57
+ return Class;
58
+ }
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import FootnotesListMarkdownNode from "../node/markdown/footnotesList";
4
-
5
- import { footnoteLinkMarkdownNodesFromNode } from "../utilities/query";
3
+ import FootnotesListMarkdownNode from "../node/markdown/list/footnotes";
6
4
 
7
5
  export function renumberFootnoteLinkMarkdownNodes(divisionMarkdownNode, footnoteReplacementMap, context) {
8
6
  const node = divisionMarkdownNode, ///