highmark-markdown 0.0.153 → 0.0.155

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 (66) hide show
  1. package/example.js +2212 -1446
  2. package/lib/example/view.js +19 -15
  3. package/lib/index.js +4 -8
  4. package/lib/markdown/bnf.js +2 -2
  5. package/lib/markdown/parser.js +5 -5
  6. package/lib/node/markdown/anchor.js +7 -1
  7. package/lib/node/markdown/contents.js +149 -0
  8. package/lib/node/markdown/contentsItem.js +141 -0
  9. package/lib/node/markdown/contentsList.js +135 -0
  10. package/lib/node/markdown/division.js +80 -62
  11. package/lib/node/markdown/heading/primary.js +134 -0
  12. package/lib/node/markdown/{quaternaryHeading.js → heading/quaternary.js} +20 -6
  13. package/lib/node/markdown/{secondaryHeading.js → heading/secondary.js} +20 -6
  14. package/lib/node/markdown/{tertiaryHeading.js → heading/tertiary.js} +20 -6
  15. package/lib/node/markdown/{header.js → heading.js} +15 -15
  16. package/lib/node/markdown/import.js +16 -9
  17. package/lib/node/markdown/line.js +4 -4
  18. package/lib/node/markdown/markedText.js +5 -3
  19. package/lib/node/markdown.js +35 -14
  20. package/lib/nodeMap.js +7 -7
  21. package/lib/ruleNameToHTMLMap.js +10 -4
  22. package/lib/ruleNames.js +16 -6
  23. package/lib/utilities/childNodes.js +48 -46
  24. package/lib/utilities/footnotes.js +71 -0
  25. package/lib/utilities/nodes.js +21 -0
  26. package/lib/utilities/query.js +30 -3
  27. package/lib/utilities/string.js +2 -2
  28. package/lib/utilities/tokens.js +45 -0
  29. package/lib/utilities/tree.js +172 -0
  30. package/package.json +6 -6
  31. package/src/example/view.js +35 -21
  32. package/src/index.js +1 -2
  33. package/src/markdown/bnf.js +6 -4
  34. package/src/markdown/parser.js +1 -1
  35. package/src/node/markdown/anchor.js +4 -0
  36. package/src/node/markdown/contents.js +40 -0
  37. package/src/node/markdown/contentsItem.js +49 -0
  38. package/src/node/markdown/contentsList.js +35 -0
  39. package/src/node/markdown/division.js +94 -39
  40. package/src/node/markdown/heading/primary.js +9 -0
  41. package/src/node/markdown/heading/quaternary.js +9 -0
  42. package/src/node/markdown/heading/secondary.js +9 -0
  43. package/src/node/markdown/heading/tertiary.js +9 -0
  44. package/src/node/markdown/heading.js +13 -0
  45. package/src/node/markdown/import.js +22 -7
  46. package/src/node/markdown/line.js +6 -4
  47. package/src/node/markdown/markedText.js +4 -4
  48. package/src/node/markdown.js +48 -18
  49. package/src/nodeMap.js +7 -7
  50. package/src/ruleNameToHTMLMap.js +15 -5
  51. package/src/ruleNames.js +6 -2
  52. package/src/utilities/childNodes.js +57 -49
  53. package/src/utilities/{link.js → footnotes.js} +8 -0
  54. package/src/utilities/{node.js → nodes.js} +0 -4
  55. package/src/utilities/query.js +32 -1
  56. package/src/utilities/string.js +1 -2
  57. package/src/utilities/tokens.js +14 -0
  58. package/src/utilities/tree.js +139 -0
  59. package/lib/node/markdown/primaryHeading.js +0 -167
  60. package/lib/utilities/link.js +0 -63
  61. package/lib/utilities/node.js +0 -32
  62. package/src/node/markdown/header.js +0 -14
  63. package/src/node/markdown/primaryHeading.js +0 -38
  64. package/src/node/markdown/quaternaryHeading.js +0 -7
  65. package/src/node/markdown/secondaryHeading.js +0 -7
  66. package/src/node/markdown/tertiaryHeading.js +0 -7
@@ -1,9 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ import { arrayUtilities } from "necessary";
4
+
3
5
  import MarkdownNode from "../../node/markdown";
4
- import FootnotesListMarkdownNode from "../../node/markdown/footnotesList";
6
+ import ContentsListMarkdownNode from "../../node/markdown/contentsList";
7
+
8
+ const { filter } = arrayUtilities;
9
+
10
+ import { nestNodes } from "../../utilities/tree";
11
+ import { replaceTokens } from "../../utilities/tokens";
12
+ import { headingMarkdownNodesFromNode, contentsMarkdownNodeFromNode } from "../../utilities/query";
13
+ // import FootnotesListMarkdownNode from "../../node/markdown/footnotesList";
5
14
 
6
- import { renumberLinkMarkdownNodes, renumberLinkMarkdownNodesHTML } from "../../utilities/link";
15
+ // import { renumberLinkMarkdownNodes, renumberLinkMarkdownNodesHTML, appendFootnotesListMarkdownNodeHTML } from "../../utilities/footnotes";
7
16
 
8
17
  export default class DivisionMarkdownNode extends MarkdownNode {
9
18
  constructor(ruleName, childNodes, precedence, opacity, domElement, divisionClassName) {
@@ -16,8 +25,8 @@ export default class DivisionMarkdownNode extends MarkdownNode {
16
25
  return this.divisionClassName;
17
26
  }
18
27
 
19
- adjustIndent(indent) {
20
- return indent;
28
+ setDivisionClassName(divisionClassName) {
29
+ this.divisionClassName = divisionClassName;
21
30
  }
22
31
 
23
32
  className(context) {
@@ -26,57 +35,90 @@ export default class DivisionMarkdownNode extends MarkdownNode {
26
35
  return className;
27
36
  }
28
37
 
29
- asHTML(indent, context) {
30
- const { divisionClassName = null } = context;
31
-
32
- this.divisionClassName = divisionClassName; ///
38
+ createContents(context) {
39
+ const node = this, ///
40
+ contentsMarkdownNode = contentsMarkdownNodeFromNode(node);
33
41
 
34
- const html = super.asHTML(indent, context);
35
-
36
- return html;
37
- }
38
-
39
- createDOMElement(context) {
40
- const { divisionClassName = null } = context;
42
+ if (contentsMarkdownNode === null) {
43
+ return;
44
+ }
41
45
 
42
- this.divisionClassName = divisionClassName; ///
46
+ const maximumLevel = contentsMarkdownNode.maximumLevel(context);
43
47
 
44
- const domElement = super.createDOMElement(context);
48
+ const headingMarkdownNodes = headingMarkdownNodesFromNodeAndMaximumLevel(node, maximumLevel, context),
49
+ headingMarkdownNodesLength = headingMarkdownNodes.length;
45
50
 
46
- return domElement;
47
- }
51
+ if (headingMarkdownNodesLength === 0) {
52
+ return;
53
+ }
48
54
 
49
- childNodesAsHTML(indent, context) {
50
- const divisionMarkdownNode = this, ///
51
- footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
55
+ const nodes = headingMarkdownNodes, ///
56
+ nestedNode = nestNodes(nodes),
57
+ childNestedNodes = nestedNode.getChildNestedNodes(),
58
+ replacementTokens = [];
52
59
 
53
- let childNodesHTML = super.childNodesAsHTML(indent, context);
60
+ Object.assign(context, {
61
+ replacementTokens
62
+ });
54
63
 
55
- if (footnotesListMarkdownNode !== null) {
56
- const footnotesListMarkdownNodeHTML = footnotesListMarkdownNode.asHTML(indent, context);
64
+ const nestedHeadingMarkdownNodes = childNestedNodes, ///
65
+ contentsListMarkdownNode = ContentsListMarkdownNode.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
66
+ replacementChildNode = contentsListMarkdownNode,
67
+ replacedChildNode = contentsMarkdownNode; ///
57
68
 
58
- childNodesHTML = `${childNodesHTML}${footnotesListMarkdownNodeHTML}`;
69
+ this.replaceChildNode(replacedChildNode, replacementChildNode);
59
70
 
60
- childNodesHTML = renumberLinkMarkdownNodesHTML(childNodesHTML, divisionMarkdownNode, footnotesListMarkdownNode, context);
61
- }
71
+ // replaceTokens(replacedChildNode, replacementTokens, context);
62
72
 
63
- return childNodesHTML;
73
+ delete context.replacementTokens;
64
74
  }
65
75
 
66
- createChildNodeDOMElements(context) {
67
- const divisionMarkdownNode = this, ///
68
- footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
76
+ createFootnotes(context) {
69
77
 
70
- super.createChildNodeDOMElements(context);
78
+ }
71
79
 
72
- if (footnotesListMarkdownNode !== null) {
73
- const footnotesListMarkdownNodeDOMElement = footnotesListMarkdownNode.createDOMElement(context),
74
- childNodeDOMElement = footnotesListMarkdownNodeDOMElement; ///
80
+ recreateFootnotes(context) {
75
81
 
76
- this.insertDOMElement(childNodeDOMElement);
82
+ }
77
83
 
78
- renumberLinkMarkdownNodes(divisionMarkdownNode, footnotesListMarkdownNode, context);
79
- }
84
+ // childNodesAsHTML(indent, context) {
85
+ // const divisionMarkdownNode = this, ///
86
+ // contentsListMarkdownNode = ContentsListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context),
87
+ // footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
88
+ //
89
+ // let childNodesHTML = super.childNodesAsHTML(indent, context);
90
+ //
91
+ // if (contentsListMarkdownNode !== null) {
92
+ // childNodesHTML = replaceContentsMarkdownNodeHTML(childNodesHTML, divisionMarkdownNode, contentsListMarkdownNode, context);
93
+ // }
94
+ //
95
+ // if (footnotesListMarkdownNode !== null) {
96
+ // childNodesHTML = renumberLinkMarkdownNodesHTML(childNodesHTML, divisionMarkdownNode, footnotesListMarkdownNode, context);
97
+ //
98
+ // childNodesHTML = appendFootnotesListMarkdownNodeHTML(childNodesHTML, footnotesListMarkdownNode, indent, context);
99
+ // }
100
+ //
101
+ // return childNodesHTML;
102
+ // }
103
+
104
+ // createChildNodeDOMElements(context) {
105
+ // const divisionMarkdownNode = this, ///
106
+ // footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
107
+ //
108
+ // super.createChildNodeDOMElements(context);
109
+ //
110
+ // if (footnotesListMarkdownNode !== null) {
111
+ // const footnotesListMarkdownNodeDOMElement = footnotesListMarkdownNode.createDOMElement(context),
112
+ // childNodeDOMElement = footnotesListMarkdownNodeDOMElement; ///
113
+ //
114
+ // this.insertDOMElement(childNodeDOMElement);
115
+ //
116
+ // renumberLinkMarkdownNodes(divisionMarkdownNode, footnotesListMarkdownNode, context);
117
+ // }
118
+ // }
119
+
120
+ clone() {
121
+ debugger
80
122
  }
81
123
 
82
124
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
@@ -87,3 +129,16 @@ export default class DivisionMarkdownNode extends MarkdownNode {
87
129
  }
88
130
  }
89
131
 
132
+ function headingMarkdownNodesFromNodeAndMaximumLevel(node, maximumLevel) {
133
+ const headingMarkdownNodes = headingMarkdownNodesFromNode(node);
134
+
135
+ filter(headingMarkdownNodes, (headingMarkdownNode) => {
136
+ const level = headingMarkdownNode.getLevel();
137
+
138
+ if (level <= maximumLevel) {
139
+ return true;
140
+ }
141
+ });
142
+
143
+ return headingMarkdownNodes;
144
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import HeadingMarkdownNode from "../../../node/markdown/heading";
4
+
5
+ export default class PrimaryHeadingMarkdownNode extends HeadingMarkdownNode {
6
+ static level = 1;
7
+
8
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return HeadingMarkdownNode.fromRuleNameChildNodesAndOpacity(PrimaryHeadingMarkdownNode, ruleName, childNodes, opacity); }
9
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import HeadingMarkdownNode from "../../../node/markdown/heading";
4
+
5
+ export default class QuaternaryHeadingMarkdownNode extends HeadingMarkdownNode {
6
+ static level = 4;
7
+
8
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return HeadingMarkdownNode.fromRuleNameChildNodesAndOpacity(QuaternaryHeadingMarkdownNode, ruleName, childNodes, opacity); }
9
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import HeadingMarkdownNode from "../../../node/markdown/heading";
4
+
5
+ export default class SecondaryHeadingMarkdownNode extends HeadingMarkdownNode {
6
+ static level = 2;
7
+
8
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return HeadingMarkdownNode.fromRuleNameChildNodesAndOpacity(SecondaryHeadingMarkdownNode, ruleName, childNodes, opacity); }
9
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import HeadingMarkdownNode from "../../../node/markdown/heading";
4
+
5
+ export default class TertiaryHeadingMarkdownNode extends HeadingMarkdownNode {
6
+ static level = 3;
7
+
8
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return HeadingMarkdownNode.fromRuleNameChildNodesAndOpacity(TertiaryHeadingMarkdownNode, ruleName, childNodes, opacity); }
9
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import MarkdownNode from "../../node/markdown";
4
+
5
+ export default class HeadingMarkdownNode extends MarkdownNode {
6
+ getLevel() {
7
+ const { level } = this.constructor;
8
+
9
+ return level;
10
+ }
11
+
12
+ static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity); }
13
+ }
@@ -4,10 +4,12 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
6
 
7
+ import { replaceTokens } from "../../utilities/tokens";
8
+
7
9
  const { fourth } = arrayUtilities;
8
10
 
9
11
  export default class ImportMarkdownNode extends MarkdownNode {
10
- asHTML(indent, context) {
12
+ resolveImports(parentNode, context) {
11
13
  let html = null;
12
14
 
13
15
  const { importer = null } = context;
@@ -15,15 +17,28 @@ export default class ImportMarkdownNode extends MarkdownNode {
15
17
  if (importer !== null) {
16
18
  const filePath = this.filePath(context);
17
19
 
18
- indent = this.adjustIndent(indent);
20
+ importer(filePath, context);
21
+
22
+ const { importedNode = null, importedTokens = null } = context;
23
+
24
+ if (importedNode !== null) {
25
+ const replacedChildNode = this, ///
26
+ replacementTokens = importedTokens, ///
27
+ replacementChildNode = importedNode; ///
28
+
29
+ parentNode.replaceChildNode(replacedChildNode, replacementChildNode);
30
+
31
+ replaceTokens(replacedChildNode, replacementTokens, context);
32
+
33
+ delete context.importedNode;
34
+ delete context.importedTokens;
19
35
 
20
- const { tokens } = context;
36
+ parentNode = this; ///
21
37
 
22
- html = importer(filePath, indent, context);
38
+ const divisionMarkdownNode = importedNode; ///
23
39
 
24
- Object.assign(context, {
25
- tokens
26
- });
40
+ divisionMarkdownNode.resolveImports(parentNode, context);
41
+ }
27
42
  }
28
43
 
29
44
  return html;
@@ -8,22 +8,24 @@ const { first } = arrayUtilities;
8
8
 
9
9
  export default class LineMarkdownNode extends MarkdownNode {
10
10
  childNodesAsHTML(indent, context) {
11
- const childNodes = this.getChildNodes(),
11
+ const trimmed = true,
12
+ childNodes = this.getChildNodes(),
12
13
  firstChildNode = first(childNodes),
13
14
  markedTextChildNode = firstChildNode, ///
14
- markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context),
15
+ markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context, trimmed),
15
16
  childNodesHTML = `${markedTextChildNodeChildNodesHTML}\n`;
16
17
 
17
18
  return childNodesHTML;
18
19
  }
19
20
 
20
21
  createChildNodeDOMElements(context) {
21
- const domElement = this.getDOMElement(),
22
+ const trimmed = true,
23
+ domElement = this.getDOMElement(),
22
24
  childNodes = this.getChildNodes(),
23
25
  firstChildNode = first(childNodes),
24
26
  markedTextChildNode = firstChildNode; ///
25
27
 
26
- markedTextChildNode.createChildNodeDOMElements(domElement, context);
28
+ markedTextChildNode.createChildNodeDOMElements(domElement, context, trimmed);
27
29
  }
28
30
 
29
31
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(LineMarkdownNode, ruleName, childNodes, opacity); }
@@ -5,19 +5,19 @@ import MarkdownNode from "../../node/markdown";
5
5
  import { htmlFromChildNodes, domElementsFromChildNodes } from "../../utilities/childNodes";
6
6
 
7
7
  export default class MarkedTextMarkdownNode extends MarkdownNode {
8
- childNodesAsHTML(indent, context) {
8
+ childNodesAsHTML(indent, context, trimmed = false) {
9
9
  const childNodes = this.getChildNodes(),
10
- html = htmlFromChildNodes(childNodes, context);
10
+ html = htmlFromChildNodes(childNodes, context, trimmed);
11
11
 
12
12
  return html;
13
13
  }
14
14
 
15
- createChildNodeDOMElements(domElement, context) {
15
+ createChildNodeDOMElements(domElement, context, trimmed = false) {
16
16
  const parentDOMElement = domElement, ///
17
17
  siblingDOMElement = null;
18
18
 
19
19
  const childNodes = this.getChildNodes(),
20
- domElements = domElementsFromChildNodes(childNodes, context),
20
+ domElements = domElementsFromChildNodes(childNodes, context, trimmed),
21
21
  childNodeDOMElements = domElements; ///
22
22
 
23
23
  childNodeDOMElements.forEach((childNodeDOMElement) => {
@@ -23,6 +23,15 @@ class MarkdownNode extends NonTerminalNode {
23
23
  this.domElement = domElement;
24
24
  }
25
25
 
26
+ replaceChildNode(replacedChildNode, replacementChildNode) {
27
+ const childNodes = this.getChildNodes(),
28
+ index = childNodes.indexOf(replacedChildNode),
29
+ start = index, ///
30
+ deleteCount = 1;
31
+
32
+ childNodes.splice(start, deleteCount, replacementChildNode);
33
+ }
34
+
26
35
  tagName(context) {
27
36
  const { tagName } = ruleNameToHTMLMap[this.ruleName];
28
37
 
@@ -94,25 +103,21 @@ class MarkdownNode extends NonTerminalNode {
94
103
  return attributeValue;
95
104
  }
96
105
 
97
- childNodesAsHTML(indent, context) {
98
- const childNodes = this.getChildNodes(),
99
- childNodesHTML = childNodes.reduce((childNodesHTML, childNode) => {
100
- const childNodeNonTerminalNode = childNode.isNonTerminalNode();
106
+ resolveImports(parentNode, context) {
107
+ parentNode = this; ///\
101
108
 
102
- if (childNodeNonTerminalNode) {
103
- const childNodeHTML = childNode.asHTML(indent, context);
109
+ const childNodes = this.getChildNodes();
104
110
 
105
- if (childNodeHTML !== null) {
106
- childNodesHTML = (childNodesHTML === null) ?
107
- childNodeHTML : ///
108
- `${childNodesHTML}${childNodeHTML}`;
109
- }
110
- }
111
+ childNodes.forEach((childNode) => {
112
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
111
113
 
112
- return childNodesHTML;
113
- }, null);
114
+ if (childNodeNonTerminalNode) {
115
+ const nonTerminalNode = childNode, ///
116
+ markdownNode = nonTerminalNode; ///
114
117
 
115
- return childNodesHTML;
118
+ markdownNode.resolveImports(parentNode, context);
119
+ }
120
+ });
116
121
  }
117
122
 
118
123
  asHTML(indent, context) {
@@ -181,6 +186,29 @@ ${childNodesHTML}${indent}${closingTag}
181
186
  return domElement;
182
187
  }
183
188
 
189
+ childNodesAsHTML(indent, context) {
190
+ const childNodes = this.getChildNodes(),
191
+ childNodesHTML = childNodes.reduce((childNodesHTML, childNode) => {
192
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
193
+
194
+ if (childNodeNonTerminalNode) {
195
+ const nonTerminalNode = childNode, ///
196
+ markdownNode = nonTerminalNode, ///
197
+ markdownNodeHTML = markdownNode.asHTML(indent, context);
198
+
199
+ if (markdownNodeHTML !== null) {
200
+ childNodesHTML = (childNodesHTML === null) ?
201
+ markdownNodeHTML : ///
202
+ `${childNodesHTML}${markdownNodeHTML}`;
203
+ }
204
+ }
205
+
206
+ return childNodesHTML;
207
+ }, null);
208
+
209
+ return childNodesHTML;
210
+ }
211
+
184
212
  createChildNodeDOMElements(context) {
185
213
  const childNodes = this.getChildNodes();
186
214
 
@@ -188,10 +216,12 @@ ${childNodesHTML}${indent}${closingTag}
188
216
  const childNodeNonTerminalNode = childNode.isNonTerminalNode();
189
217
 
190
218
  if (childNodeNonTerminalNode) {
191
- const childNodeDOMElement = childNode.createDOMElement(context);
219
+ const nonTerminalNode = childNode, ///
220
+ markdownNode = nonTerminalNode, ///
221
+ markdownNodeDOMElement = markdownNode.createDOMElement(context);
192
222
 
193
- if (childNodeDOMElement !== null) {
194
- this.insertDOMElement(childNodeDOMElement);
223
+ if (markdownNodeDOMElement !== null) {
224
+ this.insertDOMElement(markdownNodeDOMElement);
195
225
  }
196
226
  }
197
227
  });
package/src/nodeMap.js CHANGED
@@ -6,8 +6,8 @@ import ImageMarkdownNode from "./node/markdown/image";
6
6
  import TableMarkdownNode from "./node/markdown/table";
7
7
  import ErrorMarkdownNode from "./node/markdown/error";
8
8
  import AnchorMarkdownNode from "./node/markdown/anchor";
9
- import HeaderMarkdownNode from "./node/markdown/header";
10
9
  import ImportMarkdownNode from "./node/markdown/import";
10
+ import ContentsMarkdownNode from "./node/markdown/contents";
11
11
  import DivisionMarkdownNode from "./node/markdown/division";
12
12
  import FootnoteMarkdownNode from "./node/markdown/footnote";
13
13
  import ReferenceMarkdownNode from "./node/markdown/reference";
@@ -38,13 +38,13 @@ import TableHeadCellMarkdownNode from "./node/markdown/tableHeadCell";
38
38
  import TableBodyCellMarkdownNode from "./node/markdown/tableBodyCell";
39
39
  import TableSeparatorMarkdownNode from "./node/markdown/tableSeparator";
40
40
  import EmphasisedTextMarkdownNode from "./node/markdown/emphasisedText";
41
- import PrimaryHeadingMarkdownNode from "./node/markdown/primaryHeading";
41
+ import PrimaryHeadingMarkdownNode from "./node/markdown/heading/primary";
42
42
  import EmptyTableCellMarkdownNode from "./node/markdown/emptyTableCell";
43
- import TertiaryHeadingMarkdownNode from "./node/markdown/tertiaryHeading";
43
+ import TertiaryHeadingMarkdownNode from "./node/markdown/heading/tertiary";
44
44
  import OrderedListItemMarkdownNode from "./node/markdown/orderedListItem";
45
45
  import BlockListingEndMarkdownNode from "./node/markdown/blockListingEnd";
46
- import SecondaryHeadingMarkdownNode from "./node/markdown/secondaryHeading";
47
- import QuaternaryHeadingMarkdownNode from "./node/markdown/quaternaryHeading";
46
+ import SecondaryHeadingMarkdownNode from "./node/markdown/heading/secondary";
47
+ import QuaternaryHeadingMarkdownNode from "./node/markdown/heading/quaternary";
48
48
  import BlockListingStartMarkdownNode from "./node/markdown/blockListingStart";
49
49
  import UnorderedListItemMarkdownNode from "./node/markdown/unorderedListItem";
50
50
  import StronglyEmphasisedTextMarkdownNode from "./node/markdown/stronglyEmphasisedText";
@@ -55,8 +55,8 @@ import { LINK_RULE_NAME,
55
55
  TABLE_RULE_NAME,
56
56
  ERROR_RULE_NAME,
57
57
  ANCHOR_RULE_NAME,
58
- HEADER_RULE_NAME,
59
58
  IMPORT_RULE_NAME,
59
+ CONTENTS_RULE_NAME,
60
60
  FOOTNOTE_RULE_NAME,
61
61
  DIVISION_RULE_NAME,
62
62
  REFERENCE_RULE_NAME,
@@ -105,8 +105,8 @@ const nodeMap = {
105
105
  [TABLE_RULE_NAME]: TableMarkdownNode,
106
106
  [ERROR_RULE_NAME]: ErrorMarkdownNode,
107
107
  [ANCHOR_RULE_NAME]: AnchorMarkdownNode,
108
- [HEADER_RULE_NAME]: HeaderMarkdownNode,
109
108
  [IMPORT_RULE_NAME]: ImportMarkdownNode,
109
+ [CONTENTS_RULE_NAME]: ContentsMarkdownNode,
110
110
  [FOOTNOTE_RULE_NAME]: FootnoteMarkdownNode,
111
111
  [DIVISION_RULE_NAME]: DivisionMarkdownNode,
112
112
  [REFERENCE_RULE_NAME]: ReferenceMarkdownNode,
@@ -6,8 +6,8 @@ import { LINK_RULE_NAME,
6
6
  TABLE_RULE_NAME,
7
7
  ERROR_RULE_NAME,
8
8
  ANCHOR_RULE_NAME,
9
- HEADER_RULE_NAME,
10
9
  IMPORT_RULE_NAME,
10
+ CONTENTS_RULE_NAME,
11
11
  FOOTNOTE_RULE_NAME,
12
12
  DIVISION_RULE_NAME,
13
13
  REFERENCE_RULE_NAME,
@@ -28,6 +28,8 @@ import { LINK_RULE_NAME,
28
28
  SUB_DIVISION_RULE_NAME,
29
29
  ORDERED_LIST_RULE_NAME,
30
30
  BLOCK_LISTING_RULE_NAME,
31
+ CONTENTS_ITEM_RULE_NAME,
32
+ CONTENTS_LIST_RULE_NAME,
31
33
  FOOTNOTE_ITEM_RULE_NAME,
32
34
  TABLE_HEAD_ROW_RULE_NAME,
33
35
  TABLE_BODY_ROW_RULE_NAME,
@@ -73,14 +75,14 @@ const ruleNameToHTMLMap = {
73
75
  tagName: "a",
74
76
  className: "anchor"
75
77
  },
76
- [HEADER_RULE_NAME]: {
77
- tagName: null,
78
- className: null
79
- },
80
78
  [IMPORT_RULE_NAME]: {
81
79
  tagName: null,
82
80
  className: null
83
81
  },
82
+ [CONTENTS_RULE_NAME]: {
83
+ tagName: "a",
84
+ className: "contents"
85
+ },
84
86
  [FOOTNOTE_RULE_NAME]: {
85
87
  tagName: null,
86
88
  className: null
@@ -161,6 +163,14 @@ const ruleNameToHTMLMap = {
161
163
  tagName: "pre",
162
164
  className: "block"
163
165
  },
166
+ [CONTENTS_ITEM_RULE_NAME]: {
167
+ tagName: "li",
168
+ className: "contents"
169
+ },
170
+ [CONTENTS_LIST_RULE_NAME]: {
171
+ tagName: "ul",
172
+ className: "contents"
173
+ },
164
174
  [FOOTNOTE_ITEM_RULE_NAME]: {
165
175
  tagName: "li",
166
176
  className: "footnote"
package/src/ruleNames.js CHANGED
@@ -6,8 +6,8 @@ export const IMAGE_RULE_NAME = "image";
6
6
  export const TABLE_RULE_NAME = "table";
7
7
  export const ERROR_RULE_NAME = "error";
8
8
  export const ANCHOR_RULE_NAME = "anchor";
9
- export const HEADER_RULE_NAME = "header";
10
9
  export const IMPORT_RULE_NAME = "import";
10
+ export const CONTENTS_RULE_NAME = "contents";
11
11
  export const FOOTNOTE_RULE_NAME = "footnote";
12
12
  export const DIVISION_RULE_NAME = "division";
13
13
  export const REFERENCE_RULE_NAME = "reference";
@@ -28,6 +28,8 @@ export const STRONG_TEXT_RULE_NAME = "strongText";
28
28
  export const SUB_DIVISION_RULE_NAME = "subDivision";
29
29
  export const ORDERED_LIST_RULE_NAME = "orderedList";
30
30
  export const BLOCK_LISTING_RULE_NAME = "blockListing";
31
+ export const CONTENTS_ITEM_RULE_NAME = "contentsItem";
32
+ export const CONTENTS_LIST_RULE_NAME = "contentsList";
31
33
  export const FOOTNOTE_ITEM_RULE_NAME = "footnoteItem";
32
34
  export const TABLE_HEAD_ROW_RULE_NAME = "tableHeadRow";
33
35
  export const TABLE_BODY_ROW_RULE_NAME = "tableBodyRow";
@@ -56,8 +58,8 @@ const ruleNames = {
56
58
  TABLE_RULE_NAME,
57
59
  ERROR_RULE_NAME,
58
60
  ANCHOR_RULE_NAME,
59
- HEADER_RULE_NAME,
60
61
  IMPORT_RULE_NAME,
62
+ CONTENTS_RULE_NAME,
61
63
  FOOTNOTE_RULE_NAME,
62
64
  DIVISION_RULE_NAME,
63
65
  REFERENCE_RULE_NAME,
@@ -78,6 +80,8 @@ const ruleNames = {
78
80
  SUB_DIVISION_RULE_NAME,
79
81
  ORDERED_LIST_RULE_NAME,
80
82
  BLOCK_LISTING_RULE_NAME,
83
+ CONTENTS_ITEM_RULE_NAME,
84
+ CONTENTS_LIST_RULE_NAME,
81
85
  FOOTNOTE_ITEM_RULE_NAME,
82
86
  TABLE_HEAD_ROW_RULE_NAME,
83
87
  TABLE_BODY_ROW_RULE_NAME,