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.
- package/example.js +2834 -6275
- package/lib/example/importer.js +2 -2
- package/lib/example/view/div/preview.js +19 -19
- package/lib/example/view/textarea/plainText.js +3 -3
- package/lib/example/view/xmp.js +3 -3
- package/lib/example/view.js +7 -7
- package/lib/index.js +5 -1
- package/lib/map/className.js +4 -45
- package/lib/map/node/html.js +16 -9
- package/lib/map/node/markdown.js +13 -12
- package/lib/map/tagName.js +4 -45
- package/lib/markdown/bnf.js +2 -2
- package/lib/mixins/node.js +1 -11
- package/lib/node/html/{indexList.js → list/index.js} +2 -2
- package/lib/node/html/listing/inline.js +7 -1
- package/lib/node/html/topmost.js +21 -39
- package/lib/node/html.js +15 -1
- package/lib/node/markdown/directive/embee.js +28 -21
- package/lib/node/markdown/directive/include.js +28 -23
- package/lib/node/markdown/division.js +82 -249
- package/lib/node/markdown/{footnotesItem.js → item/footnotes.js} +5 -5
- package/lib/node/markdown/{contentsLink.js → link/contents.js} +3 -3
- package/lib/node/markdown/{emailLink.js → link/email.js} +3 -3
- package/lib/node/markdown/{footnoteLink.js → link/footnote.js} +3 -3
- package/lib/node/markdown/{indexLink.js → link/index.js} +2 -2
- package/lib/node/markdown/{contentsList.js → list/contents.js} +3 -3
- package/lib/node/markdown/{footnotesList.js → list/footnotes.js} +3 -3
- package/lib/node/markdown/{indexList.js → list/index.js} +3 -3
- package/lib/node/markdown/{blockListing.js → listng/block.js} +2 -2
- package/lib/node/markdown/{inlineListing.js → listng/inline.js} +21 -23
- package/lib/node/markdown/subDivision.js +144 -0
- package/lib/node/markdown/topmost.js +32 -65
- package/lib/queries.js +4 -3
- package/lib/ruleNames.js +16 -6
- package/lib/transform/{subDivision/contentsDirective.js → contentsDirective.js} +5 -6
- package/lib/transform/contentsLink.js +3 -3
- package/lib/transform/contentsList.js +7 -8
- package/lib/transform/footnote.js +2 -3
- package/lib/transform/{subDivision/footnote.js → footnoteIdentifier.js} +6 -7
- package/lib/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +5 -6
- package/lib/transform/footnotesItem.js +3 -3
- package/lib/transform/footnotesList.js +4 -5
- package/lib/transform/{subDivision/indexDirective.js → indexDirective.js} +5 -6
- package/lib/transform/indexList.js +3 -3
- package/lib/transform/markdown/directive/embed.js +134 -0
- package/lib/transform/markdown/directive/ignore.js +134 -0
- package/lib/transform/{embedDirective.js → markdown/directive/include.js} +20 -22
- package/lib/transform/markdown/subDivision.js +140 -0
- package/lib/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +5 -6
- package/lib/utilities/dom.js +62 -0
- package/lib/utilities/footnotes.js +4 -5
- package/lib/utilities/html.js +135 -51
- package/lib/utilities/index.js +5 -5
- package/lib/utilities/markdown.js +66 -22
- package/lib/utilities/query.js +17 -99
- package/package.json +4 -4
- package/src/example/importer.js +0 -1
- package/src/example/view/div/preview.js +16 -16
- package/src/example/view/textarea/plainText.js +2 -2
- package/src/example/view/xmp.js +3 -2
- package/src/example/view.js +9 -8
- package/src/index.js +1 -0
- package/src/map/className.js +3 -6
- package/src/map/node/html.js +18 -6
- package/src/map/node/markdown.js +15 -12
- package/src/map/tagName.js +3 -6
- package/src/markdown/bnf.js +33 -32
- package/src/mixins/node.js +0 -11
- package/src/node/html/{indexList.js → list/index.js} +1 -1
- package/src/node/html/listing/inline.js +2 -0
- package/src/node/html/topmost.js +16 -47
- package/src/node/html.js +12 -0
- package/src/node/markdown/directive/embee.js +37 -25
- package/src/node/markdown/directive/include.js +36 -27
- package/src/node/markdown/division.js +153 -136
- package/src/node/markdown/{footnotesItem.js → item/footnotes.js} +4 -4
- package/src/node/markdown/{contentsLink.js → link/contents.js} +2 -2
- package/src/node/markdown/{emailLink.js → link/email.js} +2 -2
- package/src/node/markdown/{footnoteLink.js → link/footnote.js} +2 -2
- package/src/node/markdown/{indexLink.js → link/index.js} +1 -1
- package/src/node/markdown/{contentsList.js → list/contents.js} +2 -2
- package/src/node/markdown/{footnotesList.js → list/footnotes.js} +2 -2
- package/src/node/markdown/{indexList.js → list/index.js} +2 -2
- package/src/node/markdown/{blockListing.js → listng/block.js} +1 -1
- package/src/node/markdown/listng/inline.js +28 -0
- package/src/node/markdown/subDivision.js +58 -0
- package/src/node/markdown/topmost.js +34 -64
- package/src/queries.js +5 -3
- package/src/ruleNames.js +6 -2
- package/src/transform/{subDivision/contentsDirective.js → contentsDirective.js} +1 -3
- package/src/transform/contentsLink.js +1 -1
- package/src/transform/contentsList.js +1 -2
- package/src/transform/footnote.js +0 -2
- package/src/transform/{subDivision/footnote.js → footnoteIdentifier.js} +1 -3
- package/src/transform/{subDivision/footnotesDirective.js → footnotesDirective.js} +1 -3
- package/src/transform/footnotesItem.js +1 -1
- package/src/transform/footnotesList.js +1 -3
- package/src/transform/{subDivision/indexDirective.js → indexDirective.js} +1 -3
- package/src/transform/indexList.js +1 -1
- package/src/transform/markdown/directive/embed.js +19 -0
- package/src/transform/markdown/directive/ignore.js +19 -0
- package/src/transform/markdown/directive/include.js +29 -0
- package/src/transform/markdown/subDivision.js +25 -0
- package/src/transform/{subDivision/pageNumberDirective.js → pageNumberDirective.js} +1 -3
- package/src/utilities/dom.js +58 -0
- package/src/utilities/footnotes.js +1 -3
- package/src/utilities/html.js +122 -52
- package/src/utilities/index.js +4 -4
- package/src/utilities/markdown.js +57 -17
- package/src/utilities/query.js +12 -94
- package/lib/transform/division.js +0 -193
- package/lib/transform/includeDirective.js +0 -158
- package/lib/transform/subDivision/embedDirectives.js +0 -147
- package/lib/transform/subDivision/includeDirectives.js +0 -142
- package/src/node/markdown/inlineListing.js +0 -28
- package/src/transform/division.js +0 -41
- package/src/transform/embedDirective.js +0 -34
- package/src/transform/includeDirective.js +0 -49
- package/src/transform/subDivision/embedDirectives.js +0 -52
- 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 "
|
|
5
|
+
import MarkdownNode from "../../../node/markdown";
|
|
6
6
|
|
|
7
|
-
import { EMPTY_STRING } from "
|
|
7
|
+
import { EMPTY_STRING } from "../../../constants";
|
|
8
8
|
|
|
9
9
|
const { second } = arrayUtilities;
|
|
10
10
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import MarkdownNode from "
|
|
3
|
+
import MarkdownNode from "../../../node/markdown";
|
|
4
4
|
|
|
5
|
-
import { CONTENTS_LIST_RULE_NAME } from "
|
|
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 "
|
|
3
|
+
import MarkdownNode from "../../../node/markdown";
|
|
4
4
|
|
|
5
|
-
import { FOOTNOTES_LIST_RULE_NAME } from "
|
|
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 "
|
|
3
|
+
import MarkdownNode from "../../../node/markdown";
|
|
4
4
|
|
|
5
|
-
import { INDEX_LIST_RULE_NAME } from "
|
|
5
|
+
import { INDEX_LIST_RULE_NAME } from "../../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class IndexListMarkdownNode extends MarkdownNode {
|
|
8
8
|
static fromIndexItemReplacements(indexItemReplacements) {
|
|
@@ -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
|
-
|
|
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
|
-
|
|
9
|
-
// divisionMarkdownNode.resolveIncludes(context);
|
|
10
|
-
// });
|
|
13
|
+
const firstDivisionMarkdownNode = this.getFirstDivisionMarkdownNode();
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
if (firstDivisionMarkdownNode === null) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
+
const topmostMarkdownNode = this; ///
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
// divisionMarkdownNode.resolveEmbeddings(context);
|
|
22
|
-
// });
|
|
23
|
-
}
|
|
21
|
+
firstDivisionMarkdownNode.resolveIncludes(topmostMarkdownNode, context);
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
27
|
+
this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
|
|
28
|
+
divisionMarkdownNode.resolveEmbeddings(context);
|
|
29
|
+
});
|
|
36
30
|
}
|
|
37
31
|
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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
|
-
|
|
60
|
-
this.
|
|
61
|
-
|
|
39
|
+
getFirstDivisionMarkdownNode() {
|
|
40
|
+
const divisionMarkdownNodes = this.getDivisionMarkdownNodes(),
|
|
41
|
+
firstDivisionMarkdownNode = first(divisionMarkdownNodes) || null;
|
|
62
42
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
43
|
+
return firstDivisionMarkdownNode;
|
|
44
|
+
}
|
|
66
45
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
result = callback(divisionMarkNode);
|
|
46
|
+
forEachDivisionMarkdownNode(callback) {
|
|
47
|
+
const divisionMarkdownNodes = this.getDivisionMarkdownNodes();
|
|
70
48
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
}
|
|
49
|
+
divisionMarkdownNodes.forEach((divisionMarkdownNode) => {
|
|
50
|
+
callback(divisionMarkdownNode);
|
|
75
51
|
});
|
|
76
52
|
}
|
|
77
53
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
|
|
81
|
-
|
|
82
|
-
if (childNodeDivisionMarkdownNode) {
|
|
83
|
-
const divisionMarkNode = childNode; ///
|
|
54
|
+
removeDivisionMarkdownNode(divisionMarkdownNode) {
|
|
55
|
+
const childNode = divisionMarkdownNode; ///
|
|
84
56
|
|
|
85
|
-
|
|
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 {
|
|
5
|
+
import { forEachHTMLNode } from "./map/node//html";
|
|
6
6
|
|
|
7
|
-
const queries =
|
|
7
|
+
const queries = [];
|
|
8
|
+
|
|
9
|
+
forEachHTMLNode((Class, ruleName) => {
|
|
8
10
|
const expressionString = `//${ruleName}`,
|
|
9
11
|
query = Query.fromExpressionString(expressionString);
|
|
10
12
|
|
|
11
|
-
|
|
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
|
|
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
|
-
|
|
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 "../
|
|
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/
|
|
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/
|
|
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
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import SubDivisionTransform from "../
|
|
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 "../
|
|
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/
|
|
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/
|
|
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 "../
|
|
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/
|
|
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 "../
|
|
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/
|
|
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, ///
|