highmark-markdown 1.0.183 → 1.0.185
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 +10243 -6411
- package/lib/constants.js +9 -1
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/example/importer.js +3 -3
- package/lib/example/indexOptions.js +1 -98
- package/lib/example/view/div/container/markdown.js +2 -2
- package/lib/example/view/div/container/markdownStyle.js +2 -2
- package/lib/example/view/div/container.js +2 -2
- package/lib/example/view/div/pageButtons.js +7 -4
- package/lib/example/view/div/preview.js +1 -5
- package/lib/example/view/div/sizeable/left.js +2 -2
- package/lib/example/view/div/tabButtons/right.js +5 -5
- package/lib/example/view/textarea/markdown.js +2 -2
- package/lib/example/view/textarea/markdownStyle.js +2 -2
- package/lib/example/view/textarea/parseTree/html.js +2 -2
- package/lib/example/view/textarea/plainText.js +1 -5
- package/lib/example/view/xmp.js +1 -5
- package/lib/example/view.js +51 -48
- package/lib/index/list.js +4 -4
- package/lib/index.js +2 -2
- package/lib/map/node/html.js +13 -7
- package/lib/map/node/markdown.js +5 -24
- package/lib/markdown/bnf.js +2 -2
- package/lib/node/html/anchor.js +49 -64
- package/lib/node/html/blockLine.js +23 -4
- package/lib/node/{markdown/paragraph.js → html/directive/contents.js} +20 -14
- package/lib/node/{markdown/strongText.js → html/directive/footnotes.js} +20 -14
- package/lib/node/{markdown/emphasisedText.js → html/directive/index.js} +20 -14
- package/lib/node/{markdown/inlineText.js → html/directive/pageNumber.js} +20 -14
- package/lib/node/html/division.js +118 -7
- package/lib/node/html/footnote.js +4 -10
- package/lib/node/html/heading/index.js +71 -10
- package/lib/node/html/heading/primary.js +8 -7
- package/lib/node/html/heading/quaternary.js +8 -7
- package/lib/node/html/heading/secondary.js +8 -7
- package/lib/node/html/heading/tertiary.js +8 -7
- package/lib/node/html/heading.js +165 -0
- package/lib/node/html/image.js +7 -6
- package/lib/node/html/item/contents.js +22 -8
- package/lib/node/html/item/footnote.js +144 -0
- package/lib/node/html/item/index.js +27 -43
- package/lib/node/html/line.js +55 -2
- package/lib/node/html/link/contents.js +34 -14
- package/lib/node/html/link/email.js +32 -8
- package/lib/node/html/link/footnote.js +95 -5
- package/lib/node/html/link/hyper.js +32 -8
- package/lib/node/html/link/index.js +66 -35
- package/lib/node/html/list/contents.js +22 -8
- package/lib/node/html/list/footnotes.js +39 -12
- package/lib/node/html/list/index.js +22 -8
- package/lib/node/html/pageNumber.js +70 -23
- package/lib/node/html/{item/footnotes.js → reference.js} +14 -14
- package/lib/node/{markdown/heading/primary.js → html/text/comma.js} +38 -28
- package/lib/node/html/text/index.js +146 -0
- package/lib/node/html/text/stronglyEmphasised.js +15 -8
- package/lib/node/html/text.js +43 -5
- package/lib/node/html/topmost.js +67 -1
- package/lib/node/html.js +77 -4
- package/lib/node/markdown/directive/{embee.js → embed.js} +1 -1
- package/lib/node/markdown/division.js +13 -22
- package/lib/node/markdown/link/footnote.js +5 -102
- package/lib/node/markdown/subDivision.js +2 -2
- package/lib/node/markdown/text/block.js +1 -1
- package/lib/node/markdown/text.js +25 -29
- package/lib/ruleNames.js +87 -81
- package/lib/style/selector.js +4 -4
- package/lib/{node/markdown/heading/tertiary.js → transform/html/directive/contents.js} +23 -28
- package/lib/{node/markdown/stronglyEmphasisedText.js → transform/html/directive/footnotes.js} +15 -14
- package/lib/{node/markdown/line.js → transform/html/directive/index.js} +19 -18
- package/lib/transform/html/directive/pageNumber.js +108 -0
- package/lib/transform/html/division.js +130 -0
- package/lib/transform/html/footnote.js +159 -0
- package/lib/transform/html/heading/index.js +109 -0
- package/lib/transform/html/index.js +159 -0
- package/lib/transform/{indexAnchor.js → html/indexAnchor.js} +20 -20
- package/lib/transform/html/item/contents.js +130 -0
- package/lib/transform/html/item/footnote.js +117 -0
- package/lib/transform/html/item/index.js +117 -0
- package/lib/transform/html/line.js +123 -0
- package/lib/transform/html/link/contents.js +130 -0
- package/lib/transform/html/link/footnote.js +158 -0
- package/lib/transform/html/link/nestedFootnote.js +108 -0
- package/lib/transform/html/list/contents.js +180 -0
- package/lib/transform/html/list/footnotes.js +117 -0
- package/lib/transform/html/list/index.js +118 -0
- package/lib/transform/html/pageNumber.js +117 -0
- package/lib/transform/html.js +168 -0
- package/lib/transform/markdown/directive/embed.js +14 -9
- package/lib/transform/markdown/directive/ignore.js +12 -38
- package/lib/transform/markdown/directive/include.js +11 -6
- package/lib/transform/markdown/subDivision.js +18 -50
- package/lib/transform/markdown.js +148 -0
- package/lib/utilities/contents.js +16 -16
- package/lib/utilities/division.js +247 -0
- package/lib/utilities/footnotes.js +8 -8
- package/lib/utilities/html.js +37 -79
- package/lib/utilities/index.js +23 -16
- package/lib/utilities/markdown.js +2 -10
- package/lib/utilities/string.js +16 -10
- package/lib/utilities/whitespace.js +33 -0
- package/package.json +6 -6
- package/src/constants.js +2 -0
- package/src/defaultMarkdownStyle.js +6 -9
- package/src/example/importer.js +11 -5
- package/src/example/indexOptions.js +0 -97
- package/src/example/view/div/container/markdown.js +1 -1
- package/src/example/view/div/container/markdownStyle.js +1 -1
- package/src/example/view/div/container.js +1 -1
- package/src/example/view/div/pageButtons.js +8 -2
- package/src/example/view/div/preview.js +0 -6
- package/src/example/view/div/sizeable/left.js +1 -1
- package/src/example/view/div/tabButtons/right.js +3 -3
- package/src/example/view/textarea/markdown.js +1 -0
- package/src/example/view/textarea/markdownStyle.js +1 -0
- package/src/example/view/textarea/parseTree/html.js +1 -1
- package/src/example/view/textarea/plainText.js +0 -6
- package/src/example/view/xmp.js +0 -6
- package/src/example/view.js +75 -74
- package/src/index/list.js +3 -3
- package/src/index.js +1 -1
- package/src/map/node/html.js +29 -11
- package/src/map/node/markdown.js +8 -65
- package/src/markdown/bnf.js +112 -149
- package/src/node/html/anchor.js +34 -43
- package/src/node/html/blockLine.js +33 -4
- package/src/node/html/directive/contents.js +9 -0
- package/src/node/html/directive/footnotes.js +9 -0
- package/src/node/html/directive/index.js +9 -0
- package/src/node/html/directive/pageNumber.js +9 -0
- package/src/node/html/division.js +154 -4
- package/src/node/html/footnote.js +1 -7
- package/src/node/html/heading/index.js +78 -2
- package/src/node/html/heading/primary.js +6 -4
- package/src/node/html/heading/quaternary.js +6 -4
- package/src/node/html/heading/secondary.js +6 -4
- package/src/node/html/heading/tertiary.js +6 -4
- package/src/node/html/heading.js +59 -0
- package/src/node/html/image.js +8 -5
- package/src/node/html/item/contents.js +25 -2
- package/src/node/html/item/footnote.js +39 -0
- package/src/node/html/item/index.js +35 -16
- package/src/node/html/line.js +41 -2
- package/src/node/html/link/contents.js +32 -5
- package/src/node/html/link/email.js +51 -17
- package/src/node/html/link/footnote.js +98 -2
- package/src/node/html/link/hyper.js +51 -17
- package/src/node/html/link/index.js +63 -30
- package/src/node/html/list/contents.js +25 -2
- package/src/node/html/list/footnotes.js +34 -2
- package/src/node/html/list/index.js +25 -2
- package/src/node/html/pageNumber.js +60 -16
- package/src/node/html/reference.js +13 -0
- package/src/node/html/text/comma.js +29 -0
- package/src/node/html/text/index.js +43 -0
- package/src/node/html/text/stronglyEmphasised.js +22 -11
- package/src/node/html/text.js +3 -3
- package/src/node/html/topmost.js +93 -1
- package/src/node/html.js +34 -6
- package/src/node/markdown/division.js +11 -227
- package/src/node/markdown/link/footnote.js +6 -82
- package/src/node/markdown/subDivision.js +1 -1
- package/src/node/markdown/text/block.js +1 -1
- package/src/node/markdown/text.js +38 -39
- package/src/ruleNames.js +11 -8
- package/src/style/selector.js +3 -4
- package/src/transform/html/directive/contents.js +19 -0
- package/src/transform/html/directive/footnotes.js +12 -0
- package/src/transform/html/directive/index.js +19 -0
- package/src/transform/html/directive/pageNumber.js +12 -0
- package/src/transform/html/division.js +33 -0
- package/src/transform/html/footnote.js +66 -0
- package/src/transform/html/heading/index.js +14 -0
- package/src/transform/html/index.js +77 -0
- package/src/transform/html/indexAnchor.js +24 -0
- package/src/transform/html/item/contents.js +48 -0
- package/src/transform/html/item/footnote.js +21 -0
- package/src/transform/html/item/index.js +21 -0
- package/src/transform/html/line.js +27 -0
- package/src/transform/html/link/contents.js +40 -0
- package/src/transform/html/link/footnote.js +58 -0
- package/src/transform/html/link/nestedFootnote.js +12 -0
- package/src/transform/html/list/contents.js +86 -0
- package/src/transform/html/list/footnotes.js +20 -0
- package/src/transform/html/list/index.js +27 -0
- package/src/transform/html/pageNumber.js +20 -0
- package/src/transform/html.js +78 -0
- package/src/transform/markdown/directive/embed.js +6 -7
- package/src/transform/markdown/directive/ignore.js +3 -9
- package/src/transform/markdown/directive/include.js +3 -3
- package/src/transform/markdown/subDivision.js +5 -17
- package/src/transform/markdown.js +9 -0
- package/src/utilities/contents.js +12 -12
- package/src/utilities/division.js +256 -0
- package/src/utilities/footnotes.js +5 -5
- package/src/utilities/html.js +39 -86
- package/src/utilities/index.js +26 -16
- package/src/utilities/markdown.js +0 -8
- package/src/utilities/string.js +5 -3
- package/src/utilities/whitespace.js +21 -0
- package/lib/node/markdown/anchor.js +0 -171
- package/lib/node/markdown/contentsItem.js +0 -112
- package/lib/node/markdown/directive/pageNumber.js +0 -163
- package/lib/node/markdown/heading/quaternary.js +0 -121
- package/lib/node/markdown/heading/secondary.js +0 -121
- package/lib/node/markdown/heading.js +0 -140
- package/lib/node/markdown/item/footnotes.js +0 -120
- package/lib/node/markdown/link/contents.js +0 -156
- package/lib/node/markdown/link/index.js +0 -117
- package/lib/node/markdown/list/contents.js +0 -112
- package/lib/node/markdown/list/footnotes.js +0 -165
- package/lib/node/markdown/list/index.js +0 -112
- package/lib/transform/contentsDirective.js +0 -112
- package/lib/transform/contentsItem.js +0 -134
- package/lib/transform/contentsLink.js +0 -115
- package/lib/transform/contentsList.js +0 -193
- package/lib/transform/footnote.js +0 -181
- package/lib/transform/footnoteIdentifier.js +0 -120
- package/lib/transform/footnotesDirective.js +0 -112
- package/lib/transform/footnotesItem.js +0 -123
- package/lib/transform/footnotesList.js +0 -172
- package/lib/transform/index.js +0 -166
- package/lib/transform/indexDirective.js +0 -112
- package/lib/transform/indexHeading.js +0 -104
- package/lib/transform/indexItem.js +0 -113
- package/lib/transform/indexList.js +0 -121
- package/lib/transform/line.js +0 -111
- package/lib/transform/pageNumberDirective.js +0 -112
- package/src/node/html/item/footnotes.js +0 -13
- package/src/node/markdown/anchor.js +0 -45
- package/src/node/markdown/contentsItem.js +0 -21
- package/src/node/markdown/directive/pageNumber.js +0 -34
- package/src/node/markdown/emphasisedText.js +0 -7
- package/src/node/markdown/heading/primary.js +0 -9
- package/src/node/markdown/heading/quaternary.js +0 -9
- package/src/node/markdown/heading/secondary.js +0 -9
- package/src/node/markdown/heading/tertiary.js +0 -9
- package/src/node/markdown/heading.js +0 -47
- package/src/node/markdown/inlineText.js +0 -7
- package/src/node/markdown/item/footnotes.js +0 -39
- package/src/node/markdown/line.js +0 -17
- package/src/node/markdown/link/contents.js +0 -31
- package/src/node/markdown/link/index.js +0 -18
- package/src/node/markdown/list/contents.js +0 -21
- package/src/node/markdown/list/footnotes.js +0 -45
- package/src/node/markdown/list/index.js +0 -21
- package/src/node/markdown/paragraph.js +0 -7
- package/src/node/markdown/strongText.js +0 -7
- package/src/node/markdown/stronglyEmphasisedText.js +0 -7
- package/src/transform/contentsDirective.js +0 -18
- package/src/transform/contentsItem.js +0 -55
- package/src/transform/contentsLink.js +0 -28
- package/src/transform/contentsList.js +0 -110
- package/src/transform/footnote.js +0 -51
- package/src/transform/footnoteIdentifier.js +0 -27
- package/src/transform/footnotesDirective.js +0 -18
- package/src/transform/footnotesItem.js +0 -25
- package/src/transform/footnotesList.js +0 -77
- package/src/transform/index.js +0 -90
- package/src/transform/indexAnchor.js +0 -27
- package/src/transform/indexDirective.js +0 -18
- package/src/transform/indexHeading.js +0 -18
- package/src/transform/indexItem.js +0 -29
- package/src/transform/indexList.js +0 -33
- package/src/transform/line.js +0 -19
- package/src/transform/pageNumberDirective.js +0 -18
- /package/src/node/markdown/directive/{embee.js → embed.js} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class HTMLTransform {
|
|
4
|
+
constructor(htmlNode) {
|
|
5
|
+
this.htmlNode = htmlNode;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
getHTMLNode() {
|
|
9
|
+
return this.htmlNode;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
appendTo(parentHTMLNode) {
|
|
13
|
+
const childNode = this.htmlNode, ///
|
|
14
|
+
parentNode = parentHTMLNode; ///
|
|
15
|
+
|
|
16
|
+
parentNode.appendChildNode(childNode);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
prependTo(parentHTMLNode) {
|
|
20
|
+
const childNode = this.htmlNode, ///
|
|
21
|
+
parentNode = parentHTMLNode; ///
|
|
22
|
+
|
|
23
|
+
parentNode.prependChildNode(childNode);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
addAfter(exitingHTMLNode) {
|
|
27
|
+
const childNode = exitingHTMLNode, ///
|
|
28
|
+
parentNode = childNode.getParentNode(),
|
|
29
|
+
index = parentNode.indexOfChildNode(childNode),
|
|
30
|
+
startIndex = index + 1,
|
|
31
|
+
addedChildNode = this.htmlNode; ///
|
|
32
|
+
|
|
33
|
+
parentNode.addChildNode(addedChildNode, startIndex);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
replace(replacedHTMLNode) {
|
|
37
|
+
const parentNode = replacedHTMLNode.getParentNode(),
|
|
38
|
+
replacedChildNode = replacedHTMLNode, ///
|
|
39
|
+
replacementChildNode = this.htmlNode, ///
|
|
40
|
+
replacementChildNodes = [
|
|
41
|
+
replacementChildNode
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
parentNode.replaceChildNode(replacedChildNode, replacementChildNodes);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
remove() {
|
|
48
|
+
const childNode = this.htmlNode, ///
|
|
49
|
+
parentNode = childNode.getParentNode();
|
|
50
|
+
|
|
51
|
+
parentNode.removeChildNode(childNode);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
expand(Class, ascendantNode) {
|
|
55
|
+
if (ascendantNode === undefined) {
|
|
56
|
+
ascendantNode = Class; ///
|
|
57
|
+
|
|
58
|
+
Class = HTMLTransform; ///
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const htmlNode = ascendantNode, ///
|
|
62
|
+
transform = new Class(htmlNode);
|
|
63
|
+
|
|
64
|
+
return transform;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static fromHTMLNode(Class, htmlNode, ...remainingArguments) {
|
|
68
|
+
if (htmlNode === undefined) {
|
|
69
|
+
htmlNode = Class; ///
|
|
70
|
+
|
|
71
|
+
Class = HTMLTransform; ///
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const htmlTransform = new Class(htmlNode, ...remainingArguments);
|
|
75
|
+
|
|
76
|
+
return htmlTransform;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import MarkdownTransform from "../../../transform/markdown";
|
|
4
4
|
|
|
5
|
-
export default class EmbedDirectiveMarkdownTransform extends
|
|
6
|
-
addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode,
|
|
7
|
-
const existingNode = subDivisionMarkdownNode
|
|
8
|
-
parentNode = divisionMarkdownNode; ///
|
|
5
|
+
export default class EmbedDirectiveMarkdownTransform extends MarkdownTransform {
|
|
6
|
+
addAfterSubDivisionMarkdownNode(subDivisionMarkdownNode, context) {
|
|
7
|
+
const existingNode = subDivisionMarkdownNode; ///
|
|
9
8
|
|
|
10
|
-
super.addAfter(existingNode,
|
|
9
|
+
super.addAfter(existingNode, context);
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
static fromSubDivisionMarkdownNodeAndTokens(subDivisionMarkdownNode, tokens) {
|
|
14
13
|
const node = subDivisionMarkdownNode, ///
|
|
15
|
-
embedDirectiveMarkdownTransform =
|
|
14
|
+
embedDirectiveMarkdownTransform = MarkdownTransform.fromNodeAndTokens(EmbedDirectiveMarkdownTransform, node, tokens);
|
|
16
15
|
|
|
17
16
|
return embedDirectiveMarkdownTransform;
|
|
18
17
|
}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
export default class IgnoreDirectiveMarkdownTransform extends Transform {
|
|
6
|
-
removeFromTopmostMarkdownNode(topmostMarkdownNode, context) {
|
|
7
|
-
const parentNode = topmostMarkdownNode; ///
|
|
8
|
-
|
|
9
|
-
super.removeFrom(parentNode, context);
|
|
10
|
-
}
|
|
3
|
+
import MarkdownTransform from "../../../transform/markdown";
|
|
11
4
|
|
|
5
|
+
export default class IgnoreDirectiveMarkdownTransform extends MarkdownTransform {
|
|
12
6
|
static fromDivisionMarkdownNode(divisionMarkdownNode) {
|
|
13
7
|
const node = divisionMarkdownNode, ///
|
|
14
8
|
tokens = null,
|
|
15
|
-
ignoredDirectiveMarkdownTransform =
|
|
9
|
+
ignoredDirectiveMarkdownTransform = MarkdownTransform.fromNodeAndTokens(IgnoreDirectiveMarkdownTransform, node, tokens);
|
|
16
10
|
|
|
17
11
|
return ignoredDirectiveMarkdownTransform;
|
|
18
12
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import MarkdownTransform from "../../../transform/markdown";
|
|
4
4
|
|
|
5
|
-
export default class IncludeDirectiveMarkdownTransform extends
|
|
5
|
+
export default class IncludeDirectiveMarkdownTransform extends MarkdownTransform {
|
|
6
6
|
getDivisionMarkdownNode() {
|
|
7
7
|
const node = this.getNode(),
|
|
8
8
|
divisionMarkdownNode = node; ///
|
|
@@ -22,7 +22,7 @@ export default class IncludeDirectiveMarkdownTransform extends Transform {
|
|
|
22
22
|
|
|
23
23
|
static fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens) {
|
|
24
24
|
const node = divisionMarkdownNode, ///
|
|
25
|
-
includeDirectiveMarkdownTransform =
|
|
25
|
+
includeDirectiveMarkdownTransform = MarkdownTransform.fromNodeAndTokens(IncludeDirectiveMarkdownTransform, node, tokens);
|
|
26
26
|
|
|
27
27
|
return includeDirectiveMarkdownTransform;
|
|
28
28
|
}
|
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
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
|
-
}
|
|
3
|
+
import MarkdownTransform from "../../transform/markdown";
|
|
17
4
|
|
|
5
|
+
export default class SubdivisionMarkdownTransform extends MarkdownTransform {
|
|
18
6
|
static fromSubDivisionMarkdownNode(subDivisionMarkdownNode) {
|
|
19
|
-
const node = subDivisionMarkdownNode,
|
|
7
|
+
const node = subDivisionMarkdownNode, ///
|
|
20
8
|
tokens = null,
|
|
21
|
-
|
|
9
|
+
embedDirectiveMarkdownTransform = MarkdownTransform.fromNodeAndTokens(SubdivisionMarkdownTransform, node, tokens);
|
|
22
10
|
|
|
23
|
-
return
|
|
11
|
+
return embedDirectiveMarkdownTransform;
|
|
24
12
|
}
|
|
25
13
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Transform } from "occam-dom";
|
|
4
|
+
|
|
5
|
+
export default class MarkdownTransform extends Transform {
|
|
6
|
+
static fromNode(Class, node, ...remainingArguments) { return Transform.fromNode(Class, node, ...remainingArguments); }
|
|
7
|
+
|
|
8
|
+
static fromNodeAndTokens(Class, node, tokens, ...remainingArguments) { return Transform.fromNodeAndTokens(Class, node, tokens, ...remainingArguments); }
|
|
9
|
+
}
|
|
@@ -4,11 +4,11 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
const { first, last } = arrayUtilities;
|
|
6
6
|
|
|
7
|
-
export function
|
|
7
|
+
export function nestHTMLNodes(htmlNodes) {
|
|
8
8
|
const nestedNodesStack = NestedNodeStack.fromNothing();
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
const depth =
|
|
10
|
+
htmlNodes.forEach((htmlNode) => {
|
|
11
|
+
const depth = htmlNode.depth();
|
|
12
12
|
|
|
13
13
|
let nestedNodesStackDepth = nestedNodesStack.getDepth()
|
|
14
14
|
|
|
@@ -20,7 +20,7 @@ export function nestNodes(nodes) {
|
|
|
20
20
|
nestedNodesStackDepth = nestedNodesStack.decrement();
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
const nestedNode = NestedNode.
|
|
23
|
+
const nestedNode = NestedNode.fromHTMLNode(htmlNode);
|
|
24
24
|
|
|
25
25
|
nestedNodesStack.addNestedNode(nestedNode);
|
|
26
26
|
});
|
|
@@ -31,13 +31,13 @@ export function nestNodes(nodes) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
class NestedNode {
|
|
34
|
-
constructor(
|
|
35
|
-
this.
|
|
34
|
+
constructor(htmlNode, childNestedNodes) {
|
|
35
|
+
this.htmlNode = htmlNode;
|
|
36
36
|
this.childNestedNodes = childNestedNodes;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
return this.
|
|
39
|
+
getHTMLNode() {
|
|
40
|
+
return this.htmlNode;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
getChildNestedNodes() {
|
|
@@ -50,17 +50,17 @@ class NestedNode {
|
|
|
50
50
|
this.childNestedNodes.push(childNestedNode);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
static
|
|
53
|
+
static fromHTMLNode(htmlNode) {
|
|
54
54
|
const childNestedNodes = [],
|
|
55
|
-
nestedNode = new NestedNode(
|
|
55
|
+
nestedNode = new NestedNode(htmlNode, childNestedNodes);
|
|
56
56
|
|
|
57
57
|
return nestedNode;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
static fromNothing() {
|
|
61
|
-
const
|
|
61
|
+
const htmlNode = null,
|
|
62
62
|
childNestedNodes = [],
|
|
63
|
-
nestedNode = new NestedNode(
|
|
63
|
+
nestedNode = new NestedNode(htmlNode, childNestedNodes);
|
|
64
64
|
|
|
65
65
|
return nestedNode;
|
|
66
66
|
}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import HTMLTransform from "../transform/html";
|
|
6
|
+
import FootnoteHTMLNode from "../node/html/footnote";
|
|
7
|
+
import LineHTMLTransform from "../transform/html/line";
|
|
8
|
+
import FootnoteHTMLTransform from "../transform/html/footnote";
|
|
9
|
+
import FootnoteItemHTMLTransform from "../transform/html/item/footnote";
|
|
10
|
+
import FootnoteLinkHTMLTransform from "../transform/html/link/footnote";
|
|
11
|
+
import NestedFootnoteLinkHTMLTransform from "../transform/html/link/nestedFootnote";
|
|
12
|
+
import FootnotesDirectiveHTMLTransform from "../transform/html/directive/footnotes";
|
|
13
|
+
import PageNumberDirectiveHTMLTransform from "../transform/html/directive/pageNumber";
|
|
14
|
+
|
|
15
|
+
import { DEFAULT_MAXIMUM_PAGE_LINES } from "../constants";
|
|
16
|
+
import { htmlNodesFromNode,
|
|
17
|
+
footnoteHTMLNodesFromNode,
|
|
18
|
+
footnoteLinkHTMLNodesFromNode,
|
|
19
|
+
footnotesDirectiveHTMLNodeFromNode,
|
|
20
|
+
nestedFootnoteLinkHTMLNodesFromNode,
|
|
21
|
+
pageNumberDirectiveHTMLNodeFromNode } from "../utilities/html";
|
|
22
|
+
|
|
23
|
+
const { backwardsForEach } = arrayUtilities;
|
|
24
|
+
|
|
25
|
+
export function groupHTMLNodes(htmlNodes) {
|
|
26
|
+
const groupedHTMLNodesArray = [];
|
|
27
|
+
|
|
28
|
+
let groupedHTMLNodes = [];
|
|
29
|
+
|
|
30
|
+
htmlNodes.forEach((htmlNode) => {
|
|
31
|
+
const htmlNodeFootnoteHTMLNode = (htmlNode instanceof FootnoteHTMLNode);
|
|
32
|
+
|
|
33
|
+
if (!htmlNodeFootnoteHTMLNode) {
|
|
34
|
+
const groupedHTMLNodeLength = groupedHTMLNodes.length;
|
|
35
|
+
|
|
36
|
+
if (groupedHTMLNodeLength > 0) {
|
|
37
|
+
groupedHTMLNodesArray.push(groupedHTMLNodes);
|
|
38
|
+
|
|
39
|
+
groupedHTMLNodes = [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const groupedHTMLNode = htmlNode; ///
|
|
44
|
+
|
|
45
|
+
groupedHTMLNodes.push(groupedHTMLNode);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const groupedHTMLNodeLength = groupedHTMLNodes.length;
|
|
49
|
+
|
|
50
|
+
if (groupedHTMLNodeLength) {
|
|
51
|
+
groupedHTMLNodesArray.push(groupedHTMLNodes);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return groupedHTMLNodesArray;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function removeHTMLNodes(node) {
|
|
58
|
+
const htmlNodes = htmlNodesFromNode(node);
|
|
59
|
+
|
|
60
|
+
htmlNodes.forEach((htmlNode) => {
|
|
61
|
+
const htmlTransform = HTMLTransform.fromHTMLNode(htmlNode);
|
|
62
|
+
|
|
63
|
+
htmlTransform.remove();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return htmlNodes;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function addFootnoteHTMLNodes(footnoteHTMLTransforms, node, context) {
|
|
70
|
+
const footnoteLinkHTMLNodes = footnoteLinkHTMLNodesFromNode(node),
|
|
71
|
+
footnoteLinkHTMLTransforms = footnoteLinkHTMLTransformsFromFootnoteLinkHTMLNodes(footnoteLinkHTMLNodes);
|
|
72
|
+
|
|
73
|
+
backwardsForEach(footnoteLinkHTMLTransforms, (footnoteLinkHTMLTransform) => {
|
|
74
|
+
const identifier = footnoteLinkHTMLTransform.identifier(context),
|
|
75
|
+
footnoteHTMLTransform = footnoteHTMLTransforms.find((footnoteHTMLTransform) => {
|
|
76
|
+
const identifierMatches = footnoteHTMLTransform.matchIdentifier(identifier, context);
|
|
77
|
+
|
|
78
|
+
if (identifierMatches) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}) || null;
|
|
82
|
+
|
|
83
|
+
if (footnoteHTMLTransform !== null) {
|
|
84
|
+
footnoteHTMLTransform.addAfterFootnoteLinkHTMLTransform(footnoteLinkHTMLTransform);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function removeFootnoteHTMLNodes(node) {
|
|
90
|
+
const footnoteHTMLNodes = footnoteHTMLNodesFromNode(node),
|
|
91
|
+
footnoteHTMLTransforms = footnoteHTMLTransformsFromFootnoteHTMLNodes(footnoteHTMLNodes);
|
|
92
|
+
|
|
93
|
+
footnoteHTMLTransforms.forEach((footnoteHTMLTransform) => {
|
|
94
|
+
footnoteHTMLTransform.remove();
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
return footnoteHTMLTransforms;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function paginateGroupedHTMLNodes(groupedHTMLNodesArray, context) {
|
|
101
|
+
const paginatedHTMLNodesArray = [];
|
|
102
|
+
|
|
103
|
+
const { maximumPageLines = DEFAULT_MAXIMUM_PAGE_LINES } = context;
|
|
104
|
+
|
|
105
|
+
let pageLines = 0,
|
|
106
|
+
paginatedHTMLNodes = [];
|
|
107
|
+
|
|
108
|
+
groupedHTMLNodesArray.forEach((groupedHTMLNodes) => {
|
|
109
|
+
const groupLines = groupedHTMLNodes.reduce((groupLines, groupedHTMLNode) => {
|
|
110
|
+
const lines = groupedHTMLNode.lines(context);
|
|
111
|
+
|
|
112
|
+
groupLines += lines;
|
|
113
|
+
|
|
114
|
+
return groupLines;
|
|
115
|
+
}, 0);
|
|
116
|
+
|
|
117
|
+
const paginatedHTMLNodesLength = paginatedHTMLNodes.length;
|
|
118
|
+
|
|
119
|
+
if (paginatedHTMLNodesLength > 0) {
|
|
120
|
+
if (pageLines + groupLines > maximumPageLines) {
|
|
121
|
+
paginatedHTMLNodesArray.push(paginatedHTMLNodes);
|
|
122
|
+
|
|
123
|
+
pageLines = 0;
|
|
124
|
+
|
|
125
|
+
paginatedHTMLNodes = [];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
paginatedHTMLNodes.push(...groupedHTMLNodes);
|
|
130
|
+
|
|
131
|
+
pageLines += groupLines;
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const paginatedHTMLNodesLength = paginatedHTMLNodes.length;
|
|
135
|
+
|
|
136
|
+
if (paginatedHTMLNodesLength) {
|
|
137
|
+
paginatedHTMLNodesArray.push(paginatedHTMLNodes);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return paginatedHTMLNodesArray;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export function numberFootnoteLinkHTMLNodes(footnoteHTMLTransforms, identifierMap, node, context) {
|
|
144
|
+
const footnoteLinkHTMLNodes = footnoteLinkHTMLNodesFromNode(node),
|
|
145
|
+
identifiers = Object.keys(identifierMap),
|
|
146
|
+
identifiersLength = identifiers.length,
|
|
147
|
+
start = identifiersLength + 1;
|
|
148
|
+
|
|
149
|
+
footnoteHTMLTransforms.forEach((footnoteHTMLTransform, index) => {
|
|
150
|
+
const identifier = footnoteHTMLTransform.identifier(context),
|
|
151
|
+
number = start + index;
|
|
152
|
+
|
|
153
|
+
identifierMap[identifier] = number;
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
footnoteLinkHTMLNodes.forEach((footnoteLinkHTMLNode) => {
|
|
157
|
+
const identifier = footnoteLinkHTMLNode.identifier(context),
|
|
158
|
+
number = identifierMap[identifier];
|
|
159
|
+
|
|
160
|
+
footnoteLinkHTMLNode.setNumber(number);
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
return start;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export function removeFootnotesDirectiveHTMLNode(node) {
|
|
167
|
+
const footnotesDirectiveHTMLNode = footnotesDirectiveHTMLNodeFromNode(node);
|
|
168
|
+
|
|
169
|
+
if (footnotesDirectiveHTMLNode !== null) {
|
|
170
|
+
const footnotesDirectiveHTMLTransform = FootnotesDirectiveHTMLTransform.fromFootnotesDirectiveHTMLNode(footnotesDirectiveHTMLNode);
|
|
171
|
+
|
|
172
|
+
footnotesDirectiveHTMLTransform.remove();
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return footnotesDirectiveHTMLNode;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export function removePageNumberDirectiveHTMLNode(node) {
|
|
179
|
+
let pageNumberDirectiveHTNLTransform = null;
|
|
180
|
+
|
|
181
|
+
const pageNumberDirectiveHTMLNode = pageNumberDirectiveHTMLNodeFromNode(node);
|
|
182
|
+
|
|
183
|
+
if (pageNumberDirectiveHTMLNode !== null) {
|
|
184
|
+
pageNumberDirectiveHTNLTransform = PageNumberDirectiveHTMLTransform.fromPageNumberDirectiveHTMLNode(pageNumberDirectiveHTMLNode);
|
|
185
|
+
|
|
186
|
+
pageNumberDirectiveHTNLTransform.remove();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return pageNumberDirectiveHTNLTransform;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export function removeNestedFootnoteLinkHTMLNodes(node) {
|
|
193
|
+
const nestedFootnoteLinkHTMLNodes = nestedFootnoteLinkHTMLNodesFromNode(node),
|
|
194
|
+
nestedFootnoteLinkHTMLTransforms = nestedFootnoteLinkHTMLTransformsFromNestedFootnoteLinkHTMLNodes(nestedFootnoteLinkHTMLNodes);
|
|
195
|
+
|
|
196
|
+
nestedFootnoteLinkHTMLTransforms.forEach((nestedFootnoteLinkHTMLTransform) => {
|
|
197
|
+
nestedFootnoteLinkHTMLTransform.remove();
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export function lineHTMLTransformsFromFootnoteHTMLTransforms(footnoteHTMLTransforms) {
|
|
202
|
+
const lineHTMLTransforms = footnoteHTMLTransforms.map((footnoteHTMLTransform) => {
|
|
203
|
+
const lineHTMLTransform = LineHTMLTransform.fromFootnoteHTMLTransform(footnoteHTMLTransform);
|
|
204
|
+
|
|
205
|
+
return lineHTMLTransform;
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
return lineHTMLTransforms;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export function footnoteItemHTMLTransformsFromLineHTMLTransforms(lineHTMLTransforms, identifierMap, start) {
|
|
212
|
+
const numbers = Object.values(identifierMap),
|
|
213
|
+
identifiers = Object.keys(identifierMap),
|
|
214
|
+
footnoteItemHTMLTransforms = lineHTMLTransforms.map((lineHTMLTransform, index) => {
|
|
215
|
+
const number = start + index;
|
|
216
|
+
|
|
217
|
+
index = numbers.indexOf(number);
|
|
218
|
+
|
|
219
|
+
const identifier = identifiers[index],
|
|
220
|
+
footnoteItemHTMLTransform = FootnoteItemHTMLTransform.fromLineTMLTransformAndIdentifier(lineHTMLTransform, identifier);
|
|
221
|
+
|
|
222
|
+
return footnoteItemHTMLTransform;
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
return footnoteItemHTMLTransforms;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function footnoteHTMLTransformsFromFootnoteHTMLNodes(footnoteHTMLNodes) {
|
|
229
|
+
const footnoteHTMLTransforms = footnoteHTMLNodes.map((footnoteHTMLNode) => {
|
|
230
|
+
const footnoteHTMLTransform = FootnoteHTMLTransform.fromFootnoteHTMLNode(footnoteHTMLNode);
|
|
231
|
+
|
|
232
|
+
return footnoteHTMLTransform;
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
return footnoteHTMLTransforms;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function footnoteLinkHTMLTransformsFromFootnoteLinkHTMLNodes(footnoteLinkHTMLNodes) {
|
|
239
|
+
const footnoteLinkHTMLTransforms = footnoteLinkHTMLNodes.map((footnoteLinkHTMLNode) => {
|
|
240
|
+
const footnoteLinkHTMLTransform = FootnoteLinkHTMLTransform.fromFootnoteLinkHTMLNode(footnoteLinkHTMLNode);
|
|
241
|
+
|
|
242
|
+
return footnoteLinkHTMLTransform;
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
return footnoteLinkHTMLTransforms;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function nestedFootnoteLinkHTMLTransformsFromNestedFootnoteLinkHTMLNodes(nestedFootnoteLinkHTMLNodes) {
|
|
249
|
+
const nestedFootnoteLinkHTMLTransforms = nestedFootnoteLinkHTMLNodes.map((nestedFootnoteLinkHTMLNode) => {
|
|
250
|
+
const nestedFootnoteLinkHTMLTransform = NestedFootnoteLinkHTMLTransform.fromNestedFootnoteLinkHTMLNode(nestedFootnoteLinkHTMLNode);
|
|
251
|
+
|
|
252
|
+
return nestedFootnoteLinkHTMLTransform;
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
return nestedFootnoteLinkHTMLTransforms;
|
|
256
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import FootnotesListHTMLNode from "../node/html/list/footnotes";
|
|
4
4
|
|
|
5
5
|
export function renumberFootnoteLinkMarkdownNodes(divisionMarkdownNode, footnoteReplacementMap, context) {
|
|
6
6
|
const node = divisionMarkdownNode, ///
|
|
@@ -17,14 +17,14 @@ export function renumberFootnoteLinkMarkdownNodes(divisionMarkdownNode, footnote
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export function
|
|
20
|
+
export function footnotesListHTMLNodeFromFootnotesListDOMElement(footnotesListDOMElement) {
|
|
21
21
|
const domElement = footnotesListDOMElement, ///
|
|
22
|
-
|
|
22
|
+
footnotesListHTMLNode = FootnotesListHTMLNode.fromDOMElement(domElement);
|
|
23
23
|
|
|
24
|
-
return
|
|
24
|
+
return footnotesListHTMLNode;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export default {
|
|
28
28
|
renumberFootnoteLinkMarkdownNodes,
|
|
29
|
-
|
|
29
|
+
footnotesListHTMLNodeFromFootnotesListDOMElement
|
|
30
30
|
};
|