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.
- package/example.js +2212 -1446
- package/lib/example/view.js +19 -15
- package/lib/index.js +4 -8
- package/lib/markdown/bnf.js +2 -2
- package/lib/markdown/parser.js +5 -5
- package/lib/node/markdown/anchor.js +7 -1
- package/lib/node/markdown/contents.js +149 -0
- package/lib/node/markdown/contentsItem.js +141 -0
- package/lib/node/markdown/contentsList.js +135 -0
- package/lib/node/markdown/division.js +80 -62
- package/lib/node/markdown/heading/primary.js +134 -0
- package/lib/node/markdown/{quaternaryHeading.js → heading/quaternary.js} +20 -6
- package/lib/node/markdown/{secondaryHeading.js → heading/secondary.js} +20 -6
- package/lib/node/markdown/{tertiaryHeading.js → heading/tertiary.js} +20 -6
- package/lib/node/markdown/{header.js → heading.js} +15 -15
- package/lib/node/markdown/import.js +16 -9
- package/lib/node/markdown/line.js +4 -4
- package/lib/node/markdown/markedText.js +5 -3
- package/lib/node/markdown.js +35 -14
- package/lib/nodeMap.js +7 -7
- package/lib/ruleNameToHTMLMap.js +10 -4
- package/lib/ruleNames.js +16 -6
- package/lib/utilities/childNodes.js +48 -46
- package/lib/utilities/footnotes.js +71 -0
- package/lib/utilities/nodes.js +21 -0
- package/lib/utilities/query.js +30 -3
- package/lib/utilities/string.js +2 -2
- package/lib/utilities/tokens.js +45 -0
- package/lib/utilities/tree.js +172 -0
- package/package.json +6 -6
- package/src/example/view.js +35 -21
- package/src/index.js +1 -2
- package/src/markdown/bnf.js +6 -4
- package/src/markdown/parser.js +1 -1
- package/src/node/markdown/anchor.js +4 -0
- package/src/node/markdown/contents.js +40 -0
- package/src/node/markdown/contentsItem.js +49 -0
- package/src/node/markdown/contentsList.js +35 -0
- package/src/node/markdown/division.js +94 -39
- package/src/node/markdown/heading/primary.js +9 -0
- package/src/node/markdown/heading/quaternary.js +9 -0
- package/src/node/markdown/heading/secondary.js +9 -0
- package/src/node/markdown/heading/tertiary.js +9 -0
- package/src/node/markdown/heading.js +13 -0
- package/src/node/markdown/import.js +22 -7
- package/src/node/markdown/line.js +6 -4
- package/src/node/markdown/markedText.js +4 -4
- package/src/node/markdown.js +48 -18
- package/src/nodeMap.js +7 -7
- package/src/ruleNameToHTMLMap.js +15 -5
- package/src/ruleNames.js +6 -2
- package/src/utilities/childNodes.js +57 -49
- package/src/utilities/{link.js → footnotes.js} +8 -0
- package/src/utilities/{node.js → nodes.js} +0 -4
- package/src/utilities/query.js +32 -1
- package/src/utilities/string.js +1 -2
- package/src/utilities/tokens.js +14 -0
- package/src/utilities/tree.js +139 -0
- package/lib/node/markdown/primaryHeading.js +0 -167
- package/lib/utilities/link.js +0 -63
- package/lib/utilities/node.js +0 -32
- package/src/node/markdown/header.js +0 -14
- package/src/node/markdown/primaryHeading.js +0 -38
- package/src/node/markdown/quaternaryHeading.js +0 -7
- package/src/node/markdown/secondaryHeading.js +0 -7
- 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
|
|
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/
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
this.divisionClassName = divisionClassName; ///
|
|
38
|
+
createContents(context) {
|
|
39
|
+
const node = this, ///
|
|
40
|
+
contentsMarkdownNode = contentsMarkdownNodeFromNode(node);
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
createDOMElement(context) {
|
|
40
|
-
const { divisionClassName = null } = context;
|
|
42
|
+
if (contentsMarkdownNode === null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
const maximumLevel = contentsMarkdownNode.maximumLevel(context);
|
|
43
47
|
|
|
44
|
-
const
|
|
48
|
+
const headingMarkdownNodes = headingMarkdownNodesFromNodeAndMaximumLevel(node, maximumLevel, context),
|
|
49
|
+
headingMarkdownNodesLength = headingMarkdownNodes.length;
|
|
45
50
|
|
|
46
|
-
|
|
47
|
-
|
|
51
|
+
if (headingMarkdownNodesLength === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
48
54
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
const nodes = headingMarkdownNodes, ///
|
|
56
|
+
nestedNode = nestNodes(nodes),
|
|
57
|
+
childNestedNodes = nestedNode.getChildNestedNodes(),
|
|
58
|
+
replacementTokens = [];
|
|
52
59
|
|
|
53
|
-
|
|
60
|
+
Object.assign(context, {
|
|
61
|
+
replacementTokens
|
|
62
|
+
});
|
|
54
63
|
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
const nestedHeadingMarkdownNodes = childNestedNodes, ///
|
|
65
|
+
contentsListMarkdownNode = ContentsListMarkdownNode.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
|
|
66
|
+
replacementChildNode = contentsListMarkdownNode,
|
|
67
|
+
replacedChildNode = contentsMarkdownNode; ///
|
|
57
68
|
|
|
58
|
-
|
|
69
|
+
this.replaceChildNode(replacedChildNode, replacementChildNode);
|
|
59
70
|
|
|
60
|
-
|
|
61
|
-
}
|
|
71
|
+
// replaceTokens(replacedChildNode, replacementTokens, context);
|
|
62
72
|
|
|
63
|
-
|
|
73
|
+
delete context.replacementTokens;
|
|
64
74
|
}
|
|
65
75
|
|
|
66
|
-
|
|
67
|
-
const divisionMarkdownNode = this, ///
|
|
68
|
-
footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
76
|
+
createFootnotes(context) {
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
}
|
|
71
79
|
|
|
72
|
-
|
|
73
|
-
const footnotesListMarkdownNodeDOMElement = footnotesListMarkdownNode.createDOMElement(context),
|
|
74
|
-
childNodeDOMElement = footnotesListMarkdownNodeDOMElement; ///
|
|
80
|
+
recreateFootnotes(context) {
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
}
|
|
77
83
|
|
|
78
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
+
parentNode = this; ///
|
|
21
37
|
|
|
22
|
-
|
|
38
|
+
const divisionMarkdownNode = importedNode; ///
|
|
23
39
|
|
|
24
|
-
|
|
25
|
-
|
|
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
|
|
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
|
|
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) => {
|
package/src/node/markdown.js
CHANGED
|
@@ -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
|
-
|
|
98
|
-
|
|
99
|
-
childNodesHTML = childNodes.reduce((childNodesHTML, childNode) => {
|
|
100
|
-
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
106
|
+
resolveImports(parentNode, context) {
|
|
107
|
+
parentNode = this; ///\
|
|
101
108
|
|
|
102
|
-
|
|
103
|
-
const childNodeHTML = childNode.asHTML(indent, context);
|
|
109
|
+
const childNodes = this.getChildNodes();
|
|
104
110
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
childNodeHTML : ///
|
|
108
|
-
`${childNodesHTML}${childNodeHTML}`;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
+
childNodes.forEach((childNode) => {
|
|
112
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
111
113
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
if (childNodeNonTerminalNode) {
|
|
115
|
+
const nonTerminalNode = childNode, ///
|
|
116
|
+
markdownNode = nonTerminalNode; ///
|
|
114
117
|
|
|
115
|
-
|
|
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
|
|
219
|
+
const nonTerminalNode = childNode, ///
|
|
220
|
+
markdownNode = nonTerminalNode, ///
|
|
221
|
+
markdownNodeDOMElement = markdownNode.createDOMElement(context);
|
|
192
222
|
|
|
193
|
-
if (
|
|
194
|
-
this.insertDOMElement(
|
|
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/
|
|
41
|
+
import PrimaryHeadingMarkdownNode from "./node/markdown/heading/primary";
|
|
42
42
|
import EmptyTableCellMarkdownNode from "./node/markdown/emptyTableCell";
|
|
43
|
-
import TertiaryHeadingMarkdownNode from "./node/markdown/
|
|
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/
|
|
47
|
-
import QuaternaryHeadingMarkdownNode from "./node/markdown/
|
|
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,
|
package/src/ruleNameToHTMLMap.js
CHANGED
|
@@ -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,
|