highmark-markdown 1.0.173 → 1.0.174
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/README.md +1 -1
- package/example.js +14061 -13787
- package/lib/example/importer.js +5 -5
- package/lib/example/view/div/container/markdown.js +3 -3
- package/lib/example/view/div/preview.js +5 -1
- package/lib/example/view/textarea/parseTree/{markdown/outer.js → html.js} +17 -17
- package/lib/example/view/textarea/parseTree/markdown.js +49 -2
- package/lib/example/view/textarea/plainText.js +7 -2
- package/lib/example/view/xmp.js +7 -2
- package/lib/example/view.js +67 -104
- package/lib/index/match.js +6 -6
- package/lib/index.js +27 -15
- package/lib/map/className.js +60 -0
- package/lib/map/node/html.js +85 -0
- package/lib/map/node/markdown.js +73 -0
- package/lib/map/tagName.js +60 -0
- package/lib/markdown/bnf.js +2 -2
- package/lib/markdown/parser.js +10 -9
- package/lib/markdownStyle/entries.js +3 -3
- package/lib/mixins/node.js +24 -23
- package/lib/node/html/anchor.js +55 -11
- package/lib/node/html/blockLine.js +75 -9
- package/lib/node/html/division.js +135 -0
- package/lib/node/html/error.js +195 -0
- package/lib/node/html/{blockListingEnd.js → footnote.js} +20 -14
- package/lib/node/html/heading/index.js +128 -0
- package/lib/node/html/heading/primary.js +129 -0
- package/lib/node/{markdown/directive.js → html/heading/quaternary.js} +21 -21
- package/lib/node/html/heading/secondary.js +129 -0
- package/lib/node/html/heading/tertiary.js +129 -0
- package/lib/node/html/image.js +214 -0
- package/lib/node/html/indexList.js +128 -0
- package/lib/node/html/item/contents.js +128 -0
- package/lib/node/html/item/footnotes.js +128 -0
- package/lib/node/{markdown/indexItem.js → html/item/index.js} +36 -15
- package/lib/node/html/item/ordered.js +17 -2
- package/lib/node/html/item/unordered.js +128 -0
- package/lib/node/html/line.js +174 -0
- package/lib/node/html/{contentsLink.js → link/contents.js} +19 -4
- package/lib/node/html/link/email.js +229 -0
- package/lib/node/html/link/footnote.js +137 -0
- package/lib/node/html/link/hyper.js +229 -0
- package/lib/node/html/link/index.js +202 -0
- package/lib/node/html/list/contents.js +128 -0
- package/lib/node/html/list/footnotes.js +144 -0
- package/lib/node/html/list/ordered.js +128 -0
- package/lib/node/html/list/unordered.js +128 -0
- package/lib/node/html/{blockListing.js → listing/block.js} +18 -9
- package/lib/node/html/listing/inline.js +189 -0
- package/lib/node/html/pageNumber.js +170 -0
- package/lib/node/html/{className.js → paragraph.js} +26 -18
- package/lib/node/{markdown/nonsense.js → html/table.js} +22 -15
- package/lib/node/{markdown/blockListingEnd.js → html/tableBody.js} +22 -15
- package/lib/node/html/tableBodyCell.js +128 -0
- package/lib/node/html/tableBodyRow.js +128 -0
- package/lib/node/html/{blockListingStart.js → tableHead.js} +26 -18
- package/lib/node/html/tableHeadCell.js +128 -0
- package/lib/node/html/tableHeadRow.js +128 -0
- package/lib/node/html/text/block.js +128 -0
- package/lib/node/html/text/emphasised.js +128 -0
- package/lib/node/html/text/inline.js +196 -0
- package/lib/node/html/text/plain.js +128 -0
- package/lib/node/html/text/strong.js +128 -0
- package/lib/node/html/text/stronglyEmphasised.js +212 -0
- package/lib/node/html/text.js +141 -0
- package/lib/node/html/topmost.js +57 -10
- package/lib/node/html.js +130 -40
- package/lib/node/markdown/anchor.js +6 -22
- package/lib/node/markdown/{table.js → blockEnd.js} +10 -10
- package/lib/node/markdown/blockListing.js +4 -31
- package/lib/node/markdown/{blockListingStart.js → blockStart.js} +10 -24
- package/lib/node/markdown/className.js +2 -2
- package/lib/node/markdown/contentsItem.js +4 -4
- package/lib/node/markdown/contentsList.js +2 -10
- package/lib/node/markdown/directive/embee.js +13 -13
- package/lib/node/markdown/directive/include.js +13 -13
- package/lib/node/markdown/directive/pageNumber.js +13 -29
- package/lib/node/markdown/division.js +205 -254
- package/lib/node/markdown/emailLink.js +36 -98
- package/lib/node/markdown/emphasisedText.js +3 -54
- package/lib/node/markdown/error.js +9 -53
- package/lib/node/markdown/footnote.js +1 -15
- package/lib/node/markdown/footnoteLink.js +9 -32
- package/lib/node/markdown/footnotesList.js +1 -16
- package/lib/node/markdown/heading/primary.js +1 -2
- package/lib/node/markdown/heading/quaternary.js +1 -2
- package/lib/node/markdown/heading/secondary.js +1 -2
- package/lib/node/markdown/heading/tertiary.js +1 -2
- package/lib/node/markdown/heading.js +1 -13
- package/lib/node/markdown/hyperlink.js +44 -108
- package/lib/node/markdown/image.js +2 -63
- package/lib/node/markdown/indexLink.js +13 -87
- package/lib/node/markdown/indexList.js +2 -10
- package/lib/node/markdown/inlineListing.js +22 -56
- package/lib/node/markdown/inlineText.js +3 -21
- package/lib/node/markdown/item/ordered.js +6 -6
- package/lib/node/markdown/line.js +1 -74
- package/lib/node/markdown/path.js +7 -7
- package/lib/node/markdown/strongText.js +3 -54
- package/lib/node/markdown/stronglyEmphasisedText.js +3 -78
- package/lib/node/markdown/{tableCellDivider.js → text/block.js} +12 -12
- package/lib/node/markdown/{tableBody.js → text/plain.js} +12 -12
- package/lib/node/markdown/text.js +154 -0
- package/lib/node/markdown/topmost.js +191 -0
- package/lib/node/markdown.js +6 -229
- package/lib/queries.js +4 -45
- package/lib/ruleNames.js +34 -21
- package/lib/style/selector.js +11 -7
- package/lib/transform/contentsItem.js +134 -0
- package/lib/transform/contentsLink.js +115 -0
- package/lib/transform/contentsList.js +194 -0
- package/lib/{replacement/subDivision.js → transform/division.js} +33 -38
- package/lib/{replacement → transform}/embedDirective.js +14 -19
- package/lib/{replacement → transform}/footnote.js +18 -23
- package/lib/transform/footnotesItem.js +123 -0
- package/lib/transform/footnotesList.js +173 -0
- package/lib/{replacement → transform}/includeDirective.js +13 -18
- package/lib/transform/index.js +166 -0
- package/lib/{replacement → transform}/indexAnchor.js +13 -13
- package/lib/{replacement → transform}/indexHeading.js +13 -18
- package/lib/{replacement → transform}/indexItem.js +13 -18
- package/lib/transform/indexList.js +121 -0
- package/lib/{replacement → transform}/line.js +13 -18
- package/lib/{replacement → transform}/subDivision/contentsDirective.js +14 -14
- package/lib/transform/subDivision/embedDirectives.js +147 -0
- package/lib/{replacement → transform}/subDivision/footnote.js +14 -14
- package/lib/{replacement → transform}/subDivision/footnotesDirective.js +14 -14
- package/lib/transform/subDivision/includeDirectives.js +142 -0
- package/lib/{replacement → transform}/subDivision/indexDirective.js +14 -14
- package/lib/{replacement → transform}/subDivision/pageNumberDirective.js +14 -14
- package/lib/utilities/content.js +1 -61
- package/lib/utilities/entities.js +17 -0
- package/lib/utilities/entries.js +6 -6
- package/lib/utilities/html.js +67 -9
- package/lib/utilities/markdown.js +45 -0
- package/lib/utilities/parser.js +8 -2
- package/lib/utilities/query.js +2 -22
- package/package.json +2 -2
- package/src/example/importer.js +2 -4
- package/src/example/view/div/container/markdown.js +2 -2
- package/src/example/view/div/preview.js +6 -0
- package/src/example/view/textarea/parseTree/html.js +28 -0
- package/src/example/view/textarea/parseTree/markdown.js +19 -1
- package/src/example/view/textarea/plainText.js +9 -1
- package/src/example/view/xmp.js +9 -1
- package/src/example/view.js +84 -91
- package/src/index/match.js +6 -6
- package/src/index.js +6 -3
- package/src/map/className.js +16 -0
- package/src/map/node/html.js +136 -0
- package/src/map/node/markdown.js +125 -0
- package/src/map/tagName.js +16 -0
- package/src/markdown/bnf.js +85 -64
- package/src/markdown/parser.js +3 -1
- package/src/markdownStyle/entries.js +3 -3
- package/src/mixins/node.js +29 -34
- package/src/node/html/anchor.js +26 -5
- package/src/node/html/blockLine.js +58 -7
- package/src/node/html/division.js +15 -0
- package/src/node/html/error.js +64 -0
- package/src/node/html/footnote.js +17 -0
- package/src/node/html/heading/index.js +13 -0
- package/src/node/html/heading/primary.js +15 -0
- package/src/node/html/heading/quaternary.js +15 -0
- package/src/node/html/heading/secondary.js +15 -0
- package/src/node/html/heading/tertiary.js +15 -0
- package/src/node/html/image.js +107 -0
- package/src/node/html/indexList.js +13 -0
- package/src/node/html/item/contents.js +13 -0
- package/src/node/html/item/footnotes.js +13 -0
- package/src/node/{markdown/indexItem.js → html/item/index.js} +9 -3
- package/src/node/html/item/ordered.js +5 -1
- package/src/node/html/item/unordered.js +13 -0
- package/src/node/html/line.js +64 -0
- package/src/node/html/{contentsLink.js → link/contents.js} +7 -3
- package/src/node/html/link/email.js +96 -0
- package/src/node/html/link/footnote.js +33 -0
- package/src/node/html/link/hyper.js +96 -0
- package/src/node/html/link/index.js +72 -0
- package/src/node/html/list/contents.js +13 -0
- package/src/node/html/list/footnotes.js +27 -0
- package/src/node/html/list/ordered.js +13 -0
- package/src/node/html/list/unordered.js +13 -0
- package/src/node/html/{blockListing.js → listing/block.js} +5 -8
- package/src/node/html/listing/inline.js +61 -0
- package/src/node/html/pageNumber.js +46 -0
- package/src/node/html/paragraph.js +13 -0
- package/src/node/html/table.js +13 -0
- package/src/node/html/tableBody.js +13 -0
- package/src/node/html/tableBodyCell.js +13 -0
- package/src/node/html/tableBodyRow.js +13 -0
- package/src/node/html/tableHead.js +13 -0
- package/src/node/html/tableHeadCell.js +13 -0
- package/src/node/html/tableHeadRow.js +13 -0
- package/src/node/html/text/block.js +13 -0
- package/src/node/html/text/emphasised.js +13 -0
- package/src/node/html/text/inline.js +57 -0
- package/src/node/html/text/plain.js +13 -0
- package/src/node/html/text/strong.js +13 -0
- package/src/node/html/text/stronglyEmphasised.js +98 -0
- package/src/node/html/text.js +34 -0
- package/src/node/html/topmost.js +57 -8
- package/src/node/html.js +136 -53
- package/src/node/markdown/anchor.js +5 -25
- package/src/node/markdown/{table.js → blockEnd.js} +2 -2
- package/src/node/markdown/blockListing.js +4 -10
- package/src/node/markdown/{blockListingStart.js → blockStart.js} +4 -6
- package/src/node/markdown/className.js +2 -2
- package/src/node/markdown/contentsItem.js +4 -4
- package/src/node/markdown/contentsList.js +0 -6
- package/src/node/markdown/directive/embee.js +10 -10
- package/src/node/markdown/directive/include.js +10 -10
- package/src/node/markdown/directive/pageNumber.js +10 -29
- package/src/node/markdown/division.js +203 -260
- package/src/node/markdown/emailLink.js +41 -87
- package/src/node/markdown/emphasisedText.js +1 -40
- package/src/node/markdown/error.js +9 -40
- package/src/node/markdown/footnote.js +0 -12
- package/src/node/markdown/footnoteLink.js +8 -31
- package/src/node/markdown/footnotesList.js +0 -13
- package/src/node/markdown/heading/primary.js +0 -2
- package/src/node/markdown/heading/quaternary.js +0 -2
- package/src/node/markdown/heading/secondary.js +0 -2
- package/src/node/markdown/heading/tertiary.js +0 -2
- package/src/node/markdown/heading.js +0 -14
- package/src/node/markdown/hyperlink.js +41 -91
- package/src/node/markdown/image.js +1 -82
- package/src/node/markdown/indexLink.js +10 -69
- package/src/node/markdown/indexList.js +0 -6
- package/src/node/markdown/inlineListing.js +20 -40
- package/src/node/markdown/inlineText.js +1 -21
- package/src/node/markdown/item/ordered.js +3 -3
- package/src/node/markdown/line.js +0 -61
- package/src/node/markdown/path.js +5 -5
- package/src/node/markdown/strongText.js +1 -40
- package/src/node/markdown/stronglyEmphasisedText.js +1 -74
- package/src/node/markdown/text/block.js +7 -0
- package/src/node/markdown/text/plain.js +7 -0
- package/src/node/markdown/text.js +80 -0
- package/src/node/markdown/topmost.js +91 -0
- package/src/node/markdown.js +1 -200
- package/src/queries.js +6 -86
- package/src/ruleNames.js +16 -12
- package/src/style/selector.js +16 -10
- package/src/transform/contentsItem.js +55 -0
- package/src/{replacement → transform}/contentsLink.js +10 -9
- package/src/{replacement → transform}/contentsList.js +26 -26
- package/src/transform/division.js +41 -0
- package/src/{replacement → transform}/embedDirective.js +4 -4
- package/src/{replacement → transform}/footnote.js +7 -7
- package/src/transform/footnotesItem.js +25 -0
- package/src/transform/footnotesList.js +79 -0
- package/src/{replacement → transform}/includeDirective.js +4 -4
- package/src/transform/index.js +90 -0
- package/src/{replacement → transform}/indexAnchor.js +5 -4
- package/src/{replacement → transform}/indexHeading.js +4 -4
- package/src/{replacement → transform}/indexItem.js +4 -4
- package/src/transform/indexList.js +33 -0
- package/src/{replacement → transform}/line.js +4 -4
- package/src/transform/subDivision/contentsDirective.js +20 -0
- package/src/transform/subDivision/embedDirectives.js +52 -0
- package/src/{replacement → transform}/subDivision/footnote.js +5 -5
- package/src/transform/subDivision/footnotesDirective.js +20 -0
- package/src/transform/subDivision/includeDirectives.js +48 -0
- package/src/transform/subDivision/indexDirective.js +20 -0
- package/src/transform/subDivision/pageNumberDirective.js +20 -0
- package/src/utilities/content.js +0 -95
- package/src/utilities/entities.js +11 -0
- package/src/utilities/entries.js +3 -3
- package/src/utilities/html.js +69 -6
- package/src/utilities/markdown.js +32 -0
- package/src/utilities/parser.js +3 -2
- package/src/utilities/query.js +8 -28
- package/lib/classFromOuterNode.js +0 -30
- package/lib/elementMap.js +0 -218
- package/lib/example/view/textarea/parseTree/markdown/inner.js +0 -179
- package/lib/mixins/content.js +0 -21
- package/lib/mixins/element.js +0 -32
- package/lib/node/html/comma.js +0 -127
- package/lib/node/html/directive/pageNumber.js +0 -178
- package/lib/node/markdown/blockLine.js +0 -207
- package/lib/node/markdown/comma.js +0 -123
- package/lib/node/markdown/directive/contents.js +0 -107
- package/lib/node/markdown/directive/footnotes.js +0 -107
- package/lib/node/markdown/directive/ignore.js +0 -107
- package/lib/node/markdown/directive/index.js +0 -107
- package/lib/node/markdown/directives.js +0 -125
- package/lib/node/markdown/emptyTableCell.js +0 -122
- package/lib/node/markdown/endOfLine.js +0 -151
- package/lib/node/markdown/indexHeading.js +0 -107
- package/lib/node/markdown/item/unordered.js +0 -107
- package/lib/node/markdown/item.js +0 -107
- package/lib/node/markdown/orderedList.js +0 -107
- package/lib/node/markdown/plainText.js +0 -115
- package/lib/node/markdown/subDivision.js +0 -161
- package/lib/node/markdown/tableBodyCell.js +0 -128
- package/lib/node/markdown/tableBodyRow.js +0 -107
- package/lib/node/markdown/tableCell.js +0 -118
- package/lib/node/markdown/tableDivider.js +0 -107
- package/lib/node/markdown/tableHead.js +0 -107
- package/lib/node/markdown/tableHeadCell.js +0 -128
- package/lib/node/markdown/tableHeadRow.js +0 -107
- package/lib/node/markdown/unorderedList.js +0 -107
- package/lib/node/markdown/verticalSpace.js +0 -151
- package/lib/nodeMap.js +0 -98
- package/lib/replacement/contentsItem.js +0 -134
- package/lib/replacement/contentsLink.js +0 -115
- package/lib/replacement/contentsList.js +0 -194
- package/lib/replacement/footnotesItem.js +0 -123
- package/lib/replacement/footnotesList.js +0 -173
- package/lib/replacement/index.js +0 -166
- package/lib/replacement/indexList.js +0 -121
- package/lib/replacement/subDivision/embedDirectives.js +0 -143
- package/lib/replacement/subDivision/includeDirectives.js +0 -175
- package/lib/replacement.js +0 -262
- package/lib/ruleNameToClassMap.js +0 -44
- package/lib/utilities/childNodes.js +0 -127
- package/lib/utilities/processing.js +0 -106
- package/lib/utilities/replacement.js +0 -195
- package/src/classFromOuterNode.js +0 -20
- package/src/elementMap.js +0 -322
- package/src/example/view/textarea/parseTree/markdown/inner.js +0 -36
- package/src/example/view/textarea/parseTree/markdown/outer.js +0 -27
- package/src/mixins/content.js +0 -16
- package/src/mixins/element.js +0 -29
- package/src/node/html/blockListingEnd.js +0 -11
- package/src/node/html/blockListingStart.js +0 -11
- package/src/node/html/className.js +0 -11
- package/src/node/html/comma.js +0 -18
- package/src/node/html/directive/pageNumber.js +0 -55
- package/src/node/markdown/blockLine.js +0 -90
- package/src/node/markdown/blockListingEnd.js +0 -9
- package/src/node/markdown/comma.js +0 -23
- package/src/node/markdown/directive/contents.js +0 -7
- package/src/node/markdown/directive/footnotes.js +0 -7
- package/src/node/markdown/directive/ignore.js +0 -7
- package/src/node/markdown/directive/index.js +0 -7
- package/src/node/markdown/directive.js +0 -15
- package/src/node/markdown/directives.js +0 -25
- package/src/node/markdown/emptyTableCell.js +0 -19
- package/src/node/markdown/endOfLine.js +0 -39
- package/src/node/markdown/indexHeading.js +0 -7
- package/src/node/markdown/item/unordered.js +0 -7
- package/src/node/markdown/item.js +0 -7
- package/src/node/markdown/nonsense.js +0 -9
- package/src/node/markdown/orderedList.js +0 -7
- package/src/node/markdown/plainText.js +0 -13
- package/src/node/markdown/subDivision.js +0 -64
- package/src/node/markdown/tableBody.js +0 -7
- package/src/node/markdown/tableBodyCell.js +0 -29
- package/src/node/markdown/tableBodyRow.js +0 -7
- package/src/node/markdown/tableCell.js +0 -19
- package/src/node/markdown/tableCellDivider.js +0 -7
- package/src/node/markdown/tableDivider.js +0 -7
- package/src/node/markdown/tableHead.js +0 -7
- package/src/node/markdown/tableHeadCell.js +0 -29
- package/src/node/markdown/tableHeadRow.js +0 -7
- package/src/node/markdown/unorderedList.js +0 -7
- package/src/node/markdown/verticalSpace.js +0 -39
- package/src/nodeMap.js +0 -200
- package/src/replacement/contentsItem.js +0 -54
- package/src/replacement/footnotesItem.js +0 -24
- package/src/replacement/footnotesList.js +0 -78
- package/src/replacement/index.js +0 -89
- package/src/replacement/indexList.js +0 -32
- package/src/replacement/subDivision/contentsDirective.js +0 -20
- package/src/replacement/subDivision/embedDirectives.js +0 -52
- package/src/replacement/subDivision/footnotesDirective.js +0 -20
- package/src/replacement/subDivision/includeDirectives.js +0 -58
- package/src/replacement/subDivision/indexDirective.js +0 -20
- package/src/replacement/subDivision/pageNumberDirective.js +0 -20
- package/src/replacement/subDivision.js +0 -41
- package/src/replacement.js +0 -185
- package/src/ruleNameToClassMap.js +0 -38
- package/src/utilities/childNodes.js +0 -178
- package/src/utilities/processing.js +0 -122
- package/src/utilities/replacement.js +0 -169
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
import DivisionMarkdownNode from "../../node/markdown/division";
|
|
5
|
+
|
|
6
|
+
export default class TopmostMarkdownNode extends MarkdownNode {
|
|
7
|
+
resolve(context) {
|
|
8
|
+
// this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
|
|
9
|
+
// divisionMarkdownNode.resolveIncludes(context);
|
|
10
|
+
// });
|
|
11
|
+
|
|
12
|
+
this.filterDivisionMarkdownNode((divisionMarkdownNode) => {
|
|
13
|
+
const ignored = divisionMarkdownNode.isIgnored();
|
|
14
|
+
|
|
15
|
+
if (!ignored) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
|
|
21
|
+
// divisionMarkdownNode.resolveEmbeddings(context);
|
|
22
|
+
// });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
getDivisionMarkdownNodeAt(index) {
|
|
26
|
+
const divisionNodeIndex = index, ///
|
|
27
|
+
divisionMarkdownNode = this.findDivisionMarkdownNode((childNode, index) => {
|
|
28
|
+
const childNodeIndex = index; ///
|
|
29
|
+
|
|
30
|
+
if (childNodeIndex === divisionNodeIndex) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return divisionMarkdownNode;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
findDivisionMarkdownNode(callback) {
|
|
39
|
+
let index = 0;
|
|
40
|
+
|
|
41
|
+
const divisionMarkdownNode = this.findChildNode((childNode) => {
|
|
42
|
+
const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
|
|
43
|
+
|
|
44
|
+
if (childNodeDivisionMarkdownNode) {
|
|
45
|
+
const divisionMarkNode = childNode, ///
|
|
46
|
+
result = callback(divisionMarkNode, index);
|
|
47
|
+
|
|
48
|
+
if (result) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
index++;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
return divisionMarkdownNode;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
filterDivisionMarkdownNode(callback) {
|
|
60
|
+
this.filterChildNode((childNode) => {
|
|
61
|
+
const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
|
|
62
|
+
|
|
63
|
+
if (!childNodeDivisionMarkdownNode) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (childNodeDivisionMarkdownNode) {
|
|
68
|
+
const divisionMarkNode = childNode, ///
|
|
69
|
+
result = callback(divisionMarkNode);
|
|
70
|
+
|
|
71
|
+
if (result) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
forEachDivisionMarkdownNode(callback) {
|
|
79
|
+
this.forEachChildNode((childNode) => {
|
|
80
|
+
const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
|
|
81
|
+
|
|
82
|
+
if (childNodeDivisionMarkdownNode) {
|
|
83
|
+
const divisionMarkNode = childNode; ///
|
|
84
|
+
|
|
85
|
+
callback(divisionMarkNode);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TopmostMarkdownNode, ruleName, childNodes, opacity); }
|
|
91
|
+
}
|
package/src/node/markdown.js
CHANGED
|
@@ -2,211 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
import elementMap from "../elementMap";
|
|
6
5
|
import nodeMixins from "../mixins/node";
|
|
7
|
-
import elementMixins from "../mixins/element";
|
|
8
|
-
|
|
9
|
-
import { EMPTY_STRING } from "../constants";
|
|
10
6
|
|
|
11
7
|
class MarkdownNode extends NonTerminalNode {
|
|
12
|
-
|
|
13
|
-
super(ruleName, childNodes, precedence, opacity);
|
|
14
|
-
|
|
15
|
-
this.domElement = domElement;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getDOMElement() {
|
|
19
|
-
return this.domElement;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
setDOMElement(domElement) {
|
|
23
|
-
this.domElement = domElement;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
tagName(context) {
|
|
27
|
-
const element = elementMap[this.ruleName];
|
|
28
|
-
|
|
29
|
-
const { tagName } = element;
|
|
30
|
-
|
|
31
|
-
return tagName;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
className(context) {
|
|
35
|
-
const element = elementMap[this.ruleName];
|
|
36
|
-
|
|
37
|
-
const { className } = element;
|
|
38
|
-
|
|
39
|
-
return className;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
attributeName(context) {
|
|
43
|
-
const attributeName = null;
|
|
44
|
-
|
|
45
|
-
return attributeName;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
attributeValue(context) {
|
|
49
|
-
const attributeValue = null;
|
|
50
|
-
|
|
51
|
-
return attributeValue;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
isDivisionMarkdownNode() {
|
|
55
|
-
const divisionMarkdownNode = false;
|
|
56
|
-
|
|
57
|
-
return divisionMarkdownNode;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
isPlainTextMarkdownNode() {
|
|
61
|
-
const plainTextMarkdownNode = false;
|
|
62
|
-
|
|
63
|
-
return plainTextMarkdownNode;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
lines(context) {
|
|
67
|
-
let lines;
|
|
68
|
-
|
|
69
|
-
({ lines = null } = this.constructor);
|
|
70
|
-
|
|
71
|
-
if (lines === null) {
|
|
72
|
-
lines = this.reduceChildNode((lines, childNode) => {
|
|
73
|
-
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
74
|
-
|
|
75
|
-
if (childNodeMarkdownNode) {
|
|
76
|
-
const markdownNode = childNode, ///
|
|
77
|
-
markdownNodeLines = markdownNode.lines(context);
|
|
78
|
-
|
|
79
|
-
lines += markdownNodeLines;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return lines;
|
|
83
|
-
}, 0);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return lines;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
mount(parentDOMElement, siblingDOMElement, context) {
|
|
90
|
-
this.domElement = this.createDOMElement(context);
|
|
91
|
-
|
|
92
|
-
if (this.domElement !== null) {
|
|
93
|
-
parentDOMElement.insertBefore(this.domElement, siblingDOMElement)
|
|
94
|
-
|
|
95
|
-
parentDOMElement = this.domElement; ///
|
|
96
|
-
|
|
97
|
-
siblingDOMElement = null;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this.childNodes.forEach((childNode) => {
|
|
101
|
-
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
102
|
-
|
|
103
|
-
if (childNodeMarkdownNode) {
|
|
104
|
-
const markdownNode = childNode; ///
|
|
105
|
-
|
|
106
|
-
markdownNode.mount(parentDOMElement, siblingDOMElement, context);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
unmount(parentDOMElement, context) {
|
|
112
|
-
if (this.domElement !== null) {
|
|
113
|
-
parentDOMElement.removeChild(this.domElement);
|
|
114
|
-
|
|
115
|
-
parentDOMElement = this.domElement; ///
|
|
116
|
-
|
|
117
|
-
this.domElement = null;
|
|
118
|
-
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
this.childNodes.forEach((childNode) => {
|
|
123
|
-
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
124
|
-
|
|
125
|
-
if (childNodeMarkdownNode) {
|
|
126
|
-
childNode.unmount(parentDOMElement, context);
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
isMounted() {
|
|
132
|
-
const mounted = (this.domElement !== null);
|
|
133
|
-
|
|
134
|
-
return mounted;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
createDOMElement(context) {
|
|
138
|
-
let domElement = null;
|
|
139
|
-
|
|
140
|
-
const tagName = this.tagName(context);
|
|
141
|
-
|
|
142
|
-
if (tagName !== null) {
|
|
143
|
-
domElement = document.createElement(tagName);
|
|
144
|
-
|
|
145
|
-
const className = this.className(context),
|
|
146
|
-
attributeName = this.attributeName(context),
|
|
147
|
-
attributeValue = this.attributeValue(context);
|
|
148
|
-
|
|
149
|
-
if (className !== null) {
|
|
150
|
-
Object.assign(domElement, {
|
|
151
|
-
className
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if ((attributeName !== null) && (attributeValue !== null)) {
|
|
156
|
-
domElement.setAttribute(attributeName, attributeValue);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return domElement;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
asPlainText(context) {
|
|
164
|
-
let plainText = null;
|
|
165
|
-
|
|
166
|
-
const tagName = this.tagName(context);
|
|
167
|
-
|
|
168
|
-
if (tagName !== null) {
|
|
169
|
-
const childNodesPlainText = this.childNodesAsPlainText(context);
|
|
170
|
-
|
|
171
|
-
plainText = childNodesPlainText; ///
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return plainText;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
childNodesAsPlainText(context) {
|
|
178
|
-
const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode) => {
|
|
179
|
-
const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
|
|
180
|
-
|
|
181
|
-
if (childNodeMarkdownNode) {
|
|
182
|
-
const markdownNode = childNode, ///
|
|
183
|
-
markdownNodePlainText = markdownNode.asPlainText(context);
|
|
184
|
-
|
|
185
|
-
if (markdownNodePlainText !== null) {
|
|
186
|
-
childNodesPlainText = (childNodesPlainText === null) ?
|
|
187
|
-
markdownNodePlainText : ///
|
|
188
|
-
`${childNodesPlainText}
|
|
189
|
-
${markdownNodePlainText}`;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return childNodesPlainText;
|
|
194
|
-
}, null);
|
|
195
|
-
|
|
196
|
-
return childNodesPlainText;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
clone(...remainingArguments) { return super.clone(this.domElement, ...remainingArguments); }
|
|
200
|
-
|
|
201
|
-
static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) {
|
|
202
|
-
const domElement = null,
|
|
203
|
-
markdownNode = NonTerminalNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, domElement, ...remainingArguments);
|
|
204
|
-
|
|
205
|
-
return markdownNode;
|
|
206
|
-
}
|
|
8
|
+
static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) { return NonTerminalNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments); }
|
|
207
9
|
}
|
|
208
10
|
|
|
209
11
|
Object.assign(MarkdownNode.prototype, nodeMixins);
|
|
210
|
-
Object.assign(MarkdownNode.prototype, elementMixins);
|
|
211
12
|
|
|
212
13
|
export default MarkdownNode;
|
package/src/queries.js
CHANGED
|
@@ -2,93 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { Query } from "occam-query";
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
IMAGE_RULE_NAME,
|
|
7
|
-
TABLE_RULE_NAME,
|
|
8
|
-
ERROR_RULE_NAME,
|
|
9
|
-
ANCHOR_RULE_NAME,
|
|
10
|
-
DIVISION_RULE_NAME,
|
|
11
|
-
PARAGRAPH_RULE_NAME,
|
|
12
|
-
HYPERLINK_RULE_NAME,
|
|
13
|
-
INDEX_LIST_RULE_NAME,
|
|
14
|
-
INDEX_ITEM_RULE_NAME,
|
|
15
|
-
INDEX_LINK_RULE_NAME,
|
|
16
|
-
TABLE_HEAD_RULE_NAME,
|
|
17
|
-
TABLE_BODY_RULE_NAME,
|
|
18
|
-
BLOCK_LINE_RULE_NAME,
|
|
19
|
-
EMAIL_LINK_RULE_NAME,
|
|
20
|
-
STRONG_TEXT_RULE_NAME,
|
|
21
|
-
ORDERED_LIST_RULE_NAME,
|
|
22
|
-
ORDERED_ITEM_RULE_NAME,
|
|
23
|
-
INDEX_HEADING_RULE_NAME,
|
|
24
|
-
BLOCK_LISTING_RULE_NAME,
|
|
25
|
-
CONTENTS_LINK_RULE_NAME,
|
|
26
|
-
CONTENTS_ITEM_RULE_NAME,
|
|
27
|
-
CONTENTS_LIST_RULE_NAME,
|
|
28
|
-
FOOTNOTE_LINK_RULE_NAME,
|
|
29
|
-
TABLE_HEAD_ROW_RULE_NAME,
|
|
30
|
-
TABLE_BODY_ROW_RULE_NAME,
|
|
31
|
-
INLINE_LISTING_RULE_NAME,
|
|
32
|
-
UNORDERED_LIST_RULE_NAME,
|
|
33
|
-
UNORDERED_ITEM_RULE_NAME,
|
|
34
|
-
FOOTNOTES_ITEM_RULE_NAME,
|
|
35
|
-
FOOTNOTES_LIST_RULE_NAME,
|
|
36
|
-
TABLE_HEAD_CELL_RULE_NAME,
|
|
37
|
-
TABLE_BODY_CELL_RULE_NAME,
|
|
38
|
-
EMPHASISED_TEXT_RULE_NAME,
|
|
39
|
-
PRIMARY_HEADING_RULE_NAME,
|
|
40
|
-
TERTIARY_HEADING_RULE_NAME,
|
|
41
|
-
SECONDARY_HEADING_RULE_NAME,
|
|
42
|
-
QUATERNARY_HEADING_RULE_NAME,
|
|
43
|
-
PAGE_NUMBER_DIRECTIVE_RULE_NAME,
|
|
44
|
-
STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "./ruleNames";
|
|
5
|
+
import { ruleNames } from "./map/node//html";
|
|
45
6
|
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
`//${TABLE_RULE_NAME}`,
|
|
50
|
-
`//${ERROR_RULE_NAME}`,
|
|
51
|
-
`//${ANCHOR_RULE_NAME}`,
|
|
52
|
-
`//${DIVISION_RULE_NAME}`,
|
|
53
|
-
`//${PARAGRAPH_RULE_NAME}`,
|
|
54
|
-
`//${HYPERLINK_RULE_NAME}`,
|
|
55
|
-
`//${INDEX_LIST_RULE_NAME}`,
|
|
56
|
-
`//${INDEX_ITEM_RULE_NAME}`,
|
|
57
|
-
`//${INDEX_LINK_RULE_NAME}`,
|
|
58
|
-
`//${TABLE_HEAD_RULE_NAME}`,
|
|
59
|
-
`//${TABLE_BODY_RULE_NAME}`,
|
|
60
|
-
`//${BLOCK_LINE_RULE_NAME}`,
|
|
61
|
-
`//${EMAIL_LINK_RULE_NAME}`,
|
|
62
|
-
`//${STRONG_TEXT_RULE_NAME}`,
|
|
63
|
-
`//${ORDERED_LIST_RULE_NAME}`,
|
|
64
|
-
`//${ORDERED_ITEM_RULE_NAME}`,
|
|
65
|
-
`//${INDEX_HEADING_RULE_NAME}`,
|
|
66
|
-
`//${BLOCK_LISTING_RULE_NAME}`,
|
|
67
|
-
`//${CONTENTS_LINK_RULE_NAME}`,
|
|
68
|
-
`//${CONTENTS_ITEM_RULE_NAME}`,
|
|
69
|
-
`//${CONTENTS_LIST_RULE_NAME}`,
|
|
70
|
-
`//${FOOTNOTE_LINK_RULE_NAME}`,
|
|
71
|
-
`//${TABLE_HEAD_ROW_RULE_NAME}`,
|
|
72
|
-
`//${TABLE_BODY_ROW_RULE_NAME}`,
|
|
73
|
-
`//${INLINE_LISTING_RULE_NAME}`,
|
|
74
|
-
`//${UNORDERED_LIST_RULE_NAME}`,
|
|
75
|
-
`//${UNORDERED_ITEM_RULE_NAME}`,
|
|
76
|
-
`//${FOOTNOTES_ITEM_RULE_NAME}`,
|
|
77
|
-
`//${FOOTNOTES_LIST_RULE_NAME}`,
|
|
78
|
-
`//${TABLE_HEAD_CELL_RULE_NAME}`,
|
|
79
|
-
`//${TABLE_BODY_CELL_RULE_NAME}`,
|
|
80
|
-
`//${EMPHASISED_TEXT_RULE_NAME}`,
|
|
81
|
-
`//${PRIMARY_HEADING_RULE_NAME}`,
|
|
82
|
-
`//${TERTIARY_HEADING_RULE_NAME}`,
|
|
83
|
-
`//${SECONDARY_HEADING_RULE_NAME}`,
|
|
84
|
-
`//${QUATERNARY_HEADING_RULE_NAME}`,
|
|
85
|
-
`//${PAGE_NUMBER_DIRECTIVE_RULE_NAME}`,
|
|
86
|
-
`//${STRONGLY_EMPHASISED_TEXT_RULE_NAME}`
|
|
87
|
-
],
|
|
88
|
-
queries = expressionStrings.map((expressionString) => {
|
|
89
|
-
const query = Query.fromExpressionString(expressionString);
|
|
7
|
+
const queries = ruleNames.map((ruleName) => {
|
|
8
|
+
const expressionString = `//${ruleName}`,
|
|
9
|
+
query = Query.fromExpressionString(expressionString);
|
|
90
10
|
|
|
91
|
-
|
|
92
|
-
|
|
11
|
+
return query;
|
|
12
|
+
});
|
|
93
13
|
|
|
94
14
|
export default queries;
|
package/src/ruleNames.js
CHANGED
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
export const LINE_RULE_NAME = "line";
|
|
4
4
|
export const PATH_RULE_NAME = "path";
|
|
5
|
-
export const COMMA_RULE_NAME = "comma";
|
|
6
5
|
export const IMAGE_RULE_NAME = "image";
|
|
7
6
|
export const TABLE_RULE_NAME = "table";
|
|
8
7
|
export const ERROR_RULE_NAME = "error";
|
|
8
|
+
export const COMMA_RULE_NAME = "comma";
|
|
9
9
|
export const ANCHOR_RULE_NAME = "anchor";
|
|
10
|
+
export const FOOTER_RULE_NAME = "footer";
|
|
11
|
+
export const TOPMOST_RULE_NAME = "markdown"; ///
|
|
10
12
|
export const DIVISION_RULE_NAME = "division";
|
|
11
13
|
export const FOOTNOTE_RULE_NAME = "footnote";
|
|
12
14
|
export const NONSENSE_RULE_NAME = "nonsense";
|
|
15
|
+
export const BLOCK_END_RULE_NAME = "blockEnd";
|
|
13
16
|
export const REFERENCE_RULE_NAME = "reference";
|
|
14
17
|
export const PARAGRAPH_RULE_NAME = "paragraph";
|
|
15
18
|
export const HYPERLINK_RULE_NAME = "hyperlink";
|
|
@@ -21,13 +24,15 @@ export const TABLE_HEAD_RULE_NAME = "tableHead";
|
|
|
21
24
|
export const TABLE_BODY_RULE_NAME = "tableBody";
|
|
22
25
|
export const BLOCK_LINE_RULE_NAME = "blockLine";
|
|
23
26
|
export const CLASS_NAME_RULE_NAME = "className";
|
|
27
|
+
export const BLOCK_TEXT_RULE_NAME = "blockText";
|
|
24
28
|
export const PLAIN_TEXT_RULE_NAME = "plainText";
|
|
25
29
|
export const EMAIL_LINK_RULE_NAME = "emailLink";
|
|
26
30
|
export const DIRECTIVES_RULE_NAME = "directives";
|
|
31
|
+
export const BLOCK_START_RULE_NAME = "blockStart";
|
|
27
32
|
export const END_OF_LINE_RULE_NAME = "endOfLine";
|
|
28
33
|
export const INLINE_TEXT_RULE_NAME = "inlineText";
|
|
29
34
|
export const STRONG_TEXT_RULE_NAME = "strongText";
|
|
30
|
-
export const
|
|
35
|
+
export const FOOTER_LINK_RULE_NAME = "footerLink";
|
|
31
36
|
export const ORDERED_LIST_RULE_NAME = "orderedList";
|
|
32
37
|
export const ORDERED_ITEM_RULE_NAME = "orderedItem";
|
|
33
38
|
export const INDEX_HEADING_RULE_NAME = "indexHeading";
|
|
@@ -37,14 +42,14 @@ export const CONTENTS_ITEM_RULE_NAME = "contentsItem";
|
|
|
37
42
|
export const CONTENTS_LIST_RULE_NAME = "contentsList";
|
|
38
43
|
export const FOOTNOTE_LINK_RULE_NAME = "footnoteLink";
|
|
39
44
|
export const TABLE_DIVIDER_RULE_NAME = "tableDivider";
|
|
40
|
-
export const
|
|
45
|
+
export const VERTICAL_SPACE_RULE_NAME = "verticalSpace";
|
|
41
46
|
export const TABLE_HEAD_ROW_RULE_NAME = "tableHeadRow";
|
|
42
47
|
export const TABLE_BODY_ROW_RULE_NAME = "tableBodyRow";
|
|
43
48
|
export const INLINE_LISTING_RULE_NAME = "inlineListing";
|
|
44
49
|
export const UNORDERED_LIST_RULE_NAME = "unorderedList";
|
|
45
50
|
export const UNORDERED_ITEM_RULE_NAME = "unorderedItem";
|
|
46
51
|
export const FOOTNOTES_LIST_RULE_NAME = "footnotesList";
|
|
47
|
-
export const
|
|
52
|
+
export const FOOTNOTES_ITEM_RULE_NAME = "footnotesItem";
|
|
48
53
|
export const TABLE_HEAD_CELL_RULE_NAME = "tableHeadCell";
|
|
49
54
|
export const TABLE_BODY_CELL_RULE_NAME = "tableBodyCell";
|
|
50
55
|
export const EMPHASISED_TEXT_RULE_NAME = "emphasisedText";
|
|
@@ -54,15 +59,13 @@ export const EMBED_DIRECTIVE_RULE_NAME = "embedDirective";
|
|
|
54
59
|
export const EMPTY_TABLE_CELL_RULE_NAME = "emptyTableCell";
|
|
55
60
|
export const TERTIARY_HEADING_RULE_NAME = "tertiaryHeading";
|
|
56
61
|
export const IGNORE_DIRECTIVE_RULE_NAME = "ignoreDirective";
|
|
57
|
-
export const BLOCK_LISTING_END_RULE_NAME = "blockListingEnd";
|
|
58
62
|
export const SECONDARY_HEADING_RULE_NAME = "secondaryHeading";
|
|
59
63
|
export const INCLUDE_DIRECTIVE_RULE_NAME = "includeDirective";
|
|
60
64
|
export const TABLE_CELL_DIVIDER_RULE_NAME = "tableCellDivider";
|
|
61
65
|
export const QUATERNARY_HEADING_RULE_NAME = "quaternaryHeading";
|
|
62
66
|
export const CONTENTS_DIRECTIVE_RULE_NAME = "contentsDirective";
|
|
63
|
-
export const BLOCK_LISTING_START_RULE_NAME = "blockListingStart";
|
|
64
67
|
export const FOOTNOTES_DIRECTIVE_RULE_NAME = "footnotesDirective";
|
|
65
|
-
export const PAGE_NUMBER_DIRECTIVE_RULE_NAME = "
|
|
68
|
+
export const PAGE_NUMBER_DIRECTIVE_RULE_NAME = "pageNumberDirective";
|
|
66
69
|
export const STRONGLY_EMPHASISED_TEXT_RULE_NAME = "stronglyEmphasisedText";
|
|
67
70
|
|
|
68
71
|
const ruleNames = {
|
|
@@ -73,12 +76,14 @@ const ruleNames = {
|
|
|
73
76
|
TABLE_RULE_NAME,
|
|
74
77
|
ERROR_RULE_NAME,
|
|
75
78
|
ANCHOR_RULE_NAME,
|
|
79
|
+
TOPMOST_RULE_NAME,
|
|
76
80
|
DIVISION_RULE_NAME,
|
|
77
81
|
FOOTNOTE_RULE_NAME,
|
|
78
82
|
NONSENSE_RULE_NAME,
|
|
79
83
|
REFERENCE_RULE_NAME,
|
|
80
84
|
PARAGRAPH_RULE_NAME,
|
|
81
85
|
HYPERLINK_RULE_NAME,
|
|
86
|
+
BLOCK_END_RULE_NAME,
|
|
82
87
|
INDEX_LIST_RULE_NAME,
|
|
83
88
|
INDEX_ITEM_RULE_NAME,
|
|
84
89
|
INDEX_LINK_RULE_NAME,
|
|
@@ -87,13 +92,14 @@ const ruleNames = {
|
|
|
87
92
|
TABLE_BODY_RULE_NAME,
|
|
88
93
|
BLOCK_LINE_RULE_NAME,
|
|
89
94
|
CLASS_NAME_RULE_NAME,
|
|
95
|
+
BLOCK_TEXT_RULE_NAME,
|
|
90
96
|
PLAIN_TEXT_RULE_NAME,
|
|
91
97
|
EMAIL_LINK_RULE_NAME,
|
|
92
98
|
DIRECTIVES_RULE_NAME,
|
|
93
99
|
END_OF_LINE_RULE_NAME,
|
|
94
100
|
INLINE_TEXT_RULE_NAME,
|
|
95
101
|
STRONG_TEXT_RULE_NAME,
|
|
96
|
-
|
|
102
|
+
BLOCK_START_RULE_NAME,
|
|
97
103
|
ORDERED_LIST_RULE_NAME,
|
|
98
104
|
ORDERED_ITEM_RULE_NAME,
|
|
99
105
|
INDEX_HEADING_RULE_NAME,
|
|
@@ -103,14 +109,14 @@ const ruleNames = {
|
|
|
103
109
|
CONTENTS_LIST_RULE_NAME,
|
|
104
110
|
FOOTNOTE_LINK_RULE_NAME,
|
|
105
111
|
TABLE_DIVIDER_RULE_NAME,
|
|
106
|
-
|
|
112
|
+
VERTICAL_SPACE_RULE_NAME,
|
|
107
113
|
TABLE_HEAD_ROW_RULE_NAME,
|
|
108
114
|
TABLE_BODY_ROW_RULE_NAME,
|
|
109
115
|
INLINE_LISTING_RULE_NAME,
|
|
110
116
|
UNORDERED_LIST_RULE_NAME,
|
|
111
117
|
UNORDERED_ITEM_RULE_NAME,
|
|
112
118
|
FOOTNOTES_LIST_RULE_NAME,
|
|
113
|
-
|
|
119
|
+
FOOTNOTES_ITEM_RULE_NAME,
|
|
114
120
|
TABLE_HEAD_CELL_RULE_NAME,
|
|
115
121
|
TABLE_BODY_CELL_RULE_NAME,
|
|
116
122
|
EMPHASISED_TEXT_RULE_NAME,
|
|
@@ -120,13 +126,11 @@ const ruleNames = {
|
|
|
120
126
|
EMPTY_TABLE_CELL_RULE_NAME,
|
|
121
127
|
TERTIARY_HEADING_RULE_NAME,
|
|
122
128
|
IGNORE_DIRECTIVE_RULE_NAME,
|
|
123
|
-
BLOCK_LISTING_END_RULE_NAME,
|
|
124
129
|
SECONDARY_HEADING_RULE_NAME,
|
|
125
130
|
INCLUDE_DIRECTIVE_RULE_NAME,
|
|
126
131
|
TABLE_CELL_DIVIDER_RULE_NAME,
|
|
127
132
|
QUATERNARY_HEADING_RULE_NAME,
|
|
128
133
|
CONTENTS_DIRECTIVE_RULE_NAME,
|
|
129
|
-
BLOCK_LISTING_START_RULE_NAME,
|
|
130
134
|
FOOTNOTES_DIRECTIVE_RULE_NAME,
|
|
131
135
|
PAGE_NUMBER_DIRECTIVE_RULE_NAME,
|
|
132
136
|
STRONGLY_EMPHASISED_TEXT_RULE_NAME
|
package/src/style/selector.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import ruleNames from "../ruleNames";
|
|
4
|
-
import
|
|
4
|
+
import tagNameMap from "../map/tagName";
|
|
5
|
+
import classNameMap from "../map/className";
|
|
5
6
|
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
7
8
|
import { EMPTY_STRING } from "../constants";
|
|
@@ -10,13 +11,10 @@ import { remainingContentFromNodeTokensAndOffset } from "../utilities/content";
|
|
|
10
11
|
|
|
11
12
|
const { STRONG_TEXT_RULE_NAME,
|
|
12
13
|
ORDERED_LIST_RULE_NAME,
|
|
13
|
-
UNORDERED_LIST_RULE_NAME,
|
|
14
14
|
ORDERED_ITEM_RULE_NAME,
|
|
15
15
|
UNORDERED_ITEM_RULE_NAME,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{ tagName: orderedListTagName } = elementMap[ORDERED_LIST_RULE_NAME],
|
|
19
|
-
{ tagName: unorderedListTagName } = elementMap[UNORDERED_LIST_RULE_NAME];
|
|
16
|
+
UNORDERED_LIST_RULE_NAME,
|
|
17
|
+
STRONGLY_EMPHASISED_TEXT_RULE_NAME } = ruleNames;
|
|
20
18
|
|
|
21
19
|
const ruleNameValues = Object.values(ruleNames),
|
|
22
20
|
ruleNameTerminalNodeQuery = nodeQuery("/selector/@rule-name");
|
|
@@ -74,7 +72,7 @@ function contentFromNodeAndTokens(node, tokens) {
|
|
|
74
72
|
const ruleNameValuesIncludesRuleName = ruleNameValues.includes(ruleName);
|
|
75
73
|
|
|
76
74
|
if (ruleNameValuesIncludesRuleName) {
|
|
77
|
-
const
|
|
75
|
+
const tagName = tagNameMap[ruleName];
|
|
78
76
|
|
|
79
77
|
if (tagName !== null) {
|
|
80
78
|
content = `${content}${tagName}`;
|
|
@@ -82,24 +80,32 @@ function contentFromNodeAndTokens(node, tokens) {
|
|
|
82
80
|
|
|
83
81
|
switch (ruleName) {
|
|
84
82
|
case ORDERED_ITEM_RULE_NAME: {
|
|
85
|
-
|
|
83
|
+
const tagName = tagNameMap[ORDERED_LIST_RULE_NAME],
|
|
84
|
+
|
|
85
|
+
content = `${tagName} > ${content}`;
|
|
86
86
|
|
|
87
87
|
break;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
case UNORDERED_ITEM_RULE_NAME: {
|
|
91
|
-
|
|
91
|
+
const tagName = tagNameMap[UNORDERED_LIST_RULE_NAME];
|
|
92
|
+
|
|
93
|
+
content = `${tagName} > ${content}`;
|
|
92
94
|
|
|
93
95
|
break;
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
case STRONGLY_EMPHASISED_TEXT_RULE_NAME: {
|
|
97
|
-
|
|
99
|
+
const tagName = tagNameMap[STRONG_TEXT_RULE_NAME];
|
|
100
|
+
|
|
101
|
+
content = `${content} > ${tagName}`;
|
|
98
102
|
|
|
99
103
|
break;
|
|
100
104
|
}
|
|
101
105
|
}
|
|
102
106
|
|
|
107
|
+
const className = classNameMap[ruleName];
|
|
108
|
+
|
|
103
109
|
if (className !== null) {
|
|
104
110
|
content = `${content}.${className}`;
|
|
105
111
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Transform } from "occam-dom";
|
|
4
|
+
|
|
5
|
+
import ContentsLinkTransform from "../transform/contentsLink";
|
|
6
|
+
import ContentsItemMarkdownNode from "../node/markdown/contentsItem";
|
|
7
|
+
|
|
8
|
+
export default class ContentsItemTransform extends Transform {
|
|
9
|
+
getContentsItemMarkdownNode() {
|
|
10
|
+
const node = this.getNode(),
|
|
11
|
+
contentsItemMarkdownNode = node; ///
|
|
12
|
+
|
|
13
|
+
return contentsItemMarkdownNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
|
|
17
|
+
const transforms = [],
|
|
18
|
+
contentsLinkTransform = ContentsLinkTransform.fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context);
|
|
19
|
+
|
|
20
|
+
if (contentsLinkTransform !== null) {
|
|
21
|
+
const node = nestedHeadingMarkdownNode.getNode(),
|
|
22
|
+
headingMarkdownNode = node; ///
|
|
23
|
+
|
|
24
|
+
headingMarkdownNode.addAnchor(context);
|
|
25
|
+
|
|
26
|
+
const transform = contentsLinkTransform;
|
|
27
|
+
|
|
28
|
+
transforms.push(transform);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const childNestedNodes = nestedHeadingMarkdownNode.getChildNestedNodes(),
|
|
32
|
+
nestedHeadingMarkdownNodes = childNestedNodes, ///
|
|
33
|
+
nestedHeadingMarkdownNodesLength = nestedHeadingMarkdownNodes.length;
|
|
34
|
+
|
|
35
|
+
if (nestedHeadingMarkdownNodesLength > 0) {
|
|
36
|
+
const { ContentsListTransform } = ContentsItemTransform,
|
|
37
|
+
contentsListTransform = ContentsListTransform.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
|
|
38
|
+
transform = contentsListTransform; ///
|
|
39
|
+
|
|
40
|
+
transforms.push(transform);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const contentsItemMarkdownNode = ContentsItemMarkdownNode.fromTransforms(transforms),
|
|
44
|
+
node = contentsItemMarkdownNode, ///
|
|
45
|
+
tokens = [];
|
|
46
|
+
|
|
47
|
+
transforms.forEach((transform) => {
|
|
48
|
+
transform.getTokens(tokens);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const contentsItemTransform = Transform.fromNodeAndTokens(ContentsItemTransform, node, tokens);
|
|
52
|
+
|
|
53
|
+
return contentsItemTransform;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
3
|
+
import { Transform } from "occam-dom";
|
|
4
|
+
|
|
5
|
+
import LineTransform from "../transform/line";
|
|
5
6
|
import ContentsLinkMarkdownNode from "../node/markdown/contentsLink";
|
|
6
7
|
|
|
7
|
-
export default class
|
|
8
|
+
export default class ContentsLinkTransform extends Transform {
|
|
8
9
|
static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
|
|
9
|
-
let
|
|
10
|
+
let contentsLinkTransform = null;
|
|
10
11
|
|
|
11
12
|
const node = nestedHeadingMarkdownNode.getNode(),
|
|
12
13
|
headingMarkdownNode = node; ///
|
|
@@ -14,14 +15,14 @@ export default class ContentsLinkReplacement extends Replacement {
|
|
|
14
15
|
if (headingMarkdownNode !== null) {
|
|
15
16
|
const identifier = headingMarkdownNode.identifier(context),
|
|
16
17
|
lineMarkdownNode = headingMarkdownNode.getLineMarkdownNode(),
|
|
17
|
-
|
|
18
|
-
contentsLinkMarkdownNode = ContentsLinkMarkdownNode.
|
|
18
|
+
lineTransform = LineTransform.fromLineMarkdownNode(lineMarkdownNode, context),
|
|
19
|
+
contentsLinkMarkdownNode = ContentsLinkMarkdownNode.fromLineTransformAndIdentifier(lineTransform, identifier),
|
|
19
20
|
node = contentsLinkMarkdownNode, ///
|
|
20
|
-
tokens =
|
|
21
|
+
tokens = lineTransform.getTokens();
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
contentsLinkTransform = Transform.fromNodeAndTokens(ContentsLinkTransform, node, tokens);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
return
|
|
26
|
+
return contentsLinkTransform;
|
|
26
27
|
}
|
|
27
28
|
}
|