highmark-markdown 0.0.1
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/.swcrc +11 -0
- package/README.md +18 -0
- package/bin/main.js +15 -0
- package/example.js +43721 -0
- package/index.html +48 -0
- package/lib/attributeNames.js +30 -0
- package/lib/constants.js +22 -0
- package/lib/example/constants.js +13 -0
- package/lib/example/view/div/previewPane.js +256 -0
- package/lib/example/view/div/sizeable/left.js +135 -0
- package/lib/example/view/div/sizeable/right.js +135 -0
- package/lib/example/view/heading.js +39 -0
- package/lib/example/view/subHeading.js +39 -0
- package/lib/example/view/textarea/bnf.js +176 -0
- package/lib/example/view/textarea/lexicalEntries.js +183 -0
- package/lib/example/view/textarea/markdown.js +176 -0
- package/lib/example/view/textarea/parseTree.js +183 -0
- package/lib/example/view/textarea.js +39 -0
- package/lib/example/view.js +262 -0
- package/lib/example.js +19 -0
- package/lib/index.js +63 -0
- package/lib/markdown/bnf.js +14 -0
- package/lib/markdown/entries.js +93 -0
- package/lib/markdown/lexer.js +157 -0
- package/lib/markdown/parser.js +155 -0
- package/lib/mixins/content.js +23 -0
- package/lib/mixins/element.js +47 -0
- package/lib/mixins/node.js +30 -0
- package/lib/node/markdown/anchor.js +164 -0
- package/lib/node/markdown/blockListing.js +137 -0
- package/lib/node/markdown/blockListingEnd.js +120 -0
- package/lib/node/markdown/blockListingStart.js +143 -0
- package/lib/node/markdown/blockText.js +132 -0
- package/lib/node/markdown/className.js +130 -0
- package/lib/node/markdown/document.js +158 -0
- package/lib/node/markdown/emphasisedText.js +123 -0
- package/lib/node/markdown/endOfLine.js +136 -0
- package/lib/node/markdown/error.js +169 -0
- package/lib/node/markdown/footnote.js +130 -0
- package/lib/node/markdown/footnoteItem.js +136 -0
- package/lib/node/markdown/footnotesList.js +154 -0
- package/lib/node/markdown/hyperlink.js +170 -0
- package/lib/node/markdown/image.js +170 -0
- package/lib/node/markdown/inlineListing.js +130 -0
- package/lib/node/markdown/inlineText.js +132 -0
- package/lib/node/markdown/line.js +131 -0
- package/lib/node/markdown/lineBreak.js +120 -0
- package/lib/node/markdown/link.js +184 -0
- package/lib/node/markdown/orderedList.js +162 -0
- package/lib/node/markdown/orderedListItem.js +130 -0
- package/lib/node/markdown/paragraph.js +120 -0
- package/lib/node/markdown/primaryHeading.js +120 -0
- package/lib/node/markdown/quaternaryHeading.js +120 -0
- package/lib/node/markdown/reference.js +130 -0
- package/lib/node/markdown/secondaryHeading.js +120 -0
- package/lib/node/markdown/strongText.js +123 -0
- package/lib/node/markdown/stronglyEmphasisedText.js +163 -0
- package/lib/node/markdown/table.js +120 -0
- package/lib/node/markdown/tableBody.js +120 -0
- package/lib/node/markdown/tableBodyCell.js +130 -0
- package/lib/node/markdown/tableBodyRow.js +120 -0
- package/lib/node/markdown/tableCell.js +152 -0
- package/lib/node/markdown/tableHead.js +120 -0
- package/lib/node/markdown/tableHeadCell.js +130 -0
- package/lib/node/markdown/tableHeadRow.js +120 -0
- package/lib/node/markdown/tableSeparator.js +120 -0
- package/lib/node/markdown/tertiaryHeading.js +120 -0
- package/lib/node/markdown/text.js +130 -0
- package/lib/node/markdown/unorderedList.js +120 -0
- package/lib/node/markdown/unorderedListItem.js +120 -0
- package/lib/node/markdown/url.js +122 -0
- package/lib/node/markdown/verticalSpace.js +132 -0
- package/lib/node/markdown.js +246 -0
- package/lib/nodeMap.js +78 -0
- package/lib/ruleNameToHTMLMap.js +161 -0
- package/lib/ruleNames.js +240 -0
- package/lib/tokenTypes.js +150 -0
- package/lib/utilities/childNodes.js +67 -0
- package/lib/utilities/content.js +52 -0
- package/lib/utilities/link.js +37 -0
- package/lib/utilities/node.js +32 -0
- package/lib/utilities/query.js +55 -0
- package/license.txt +48 -0
- package/package.json +43 -0
- package/src/attributeNames.js +6 -0
- package/src/constants.js +4 -0
- package/src/example/constants.js +4 -0
- package/src/example/view/div/previewPane.js +82 -0
- package/src/example/view/div/sizeable/left.js +19 -0
- package/src/example/view/div/sizeable/right.js +19 -0
- package/src/example/view/heading.js +14 -0
- package/src/example/view/subHeading.js +16 -0
- package/src/example/view/textarea/bnf.js +41 -0
- package/src/example/view/textarea/lexicalEntries.js +52 -0
- package/src/example/view/textarea/markdown.js +41 -0
- package/src/example/view/textarea/parseTree.js +50 -0
- package/src/example/view/textarea.js +17 -0
- package/src/example/view.js +139 -0
- package/src/example.js +21 -0
- package/src/index.js +13 -0
- package/src/markdown/bnf.js +143 -0
- package/src/markdown/entries.js +84 -0
- package/src/markdown/lexer.js +36 -0
- package/src/markdown/parser.js +36 -0
- package/src/mixins/content.js +19 -0
- package/src/mixins/element.js +47 -0
- package/src/mixins/node.js +27 -0
- package/src/node/markdown/anchor.js +37 -0
- package/src/node/markdown/blockListing.js +29 -0
- package/src/node/markdown/blockListingEnd.js +7 -0
- package/src/node/markdown/blockListingStart.js +28 -0
- package/src/node/markdown/blockText.js +22 -0
- package/src/node/markdown/className.js +21 -0
- package/src/node/markdown/document.js +26 -0
- package/src/node/markdown/emphasisedText.js +13 -0
- package/src/node/markdown/endOfLine.js +24 -0
- package/src/node/markdown/error.js +36 -0
- package/src/node/markdown/footnote.js +21 -0
- package/src/node/markdown/footnoteItem.js +37 -0
- package/src/node/markdown/footnotesList.js +64 -0
- package/src/node/markdown/hyperlink.js +47 -0
- package/src/node/markdown/image.js +47 -0
- package/src/node/markdown/inlineListing.js +20 -0
- package/src/node/markdown/inlineText.js +22 -0
- package/src/node/markdown/line.js +21 -0
- package/src/node/markdown/lineBreak.js +7 -0
- package/src/node/markdown/link.js +54 -0
- package/src/node/markdown/orderedList.js +33 -0
- package/src/node/markdown/orderedListItem.js +21 -0
- package/src/node/markdown/paragraph.js +7 -0
- package/src/node/markdown/primaryHeading.js +7 -0
- package/src/node/markdown/quaternaryHeading.js +7 -0
- package/src/node/markdown/reference.js +21 -0
- package/src/node/markdown/secondaryHeading.js +7 -0
- package/src/node/markdown/strongText.js +13 -0
- package/src/node/markdown/stronglyEmphasisedText.js +39 -0
- package/src/node/markdown/table.js +7 -0
- package/src/node/markdown/tableBody.js +7 -0
- package/src/node/markdown/tableBodyCell.js +20 -0
- package/src/node/markdown/tableBodyRow.js +7 -0
- package/src/node/markdown/tableCell.js +42 -0
- package/src/node/markdown/tableHead.js +7 -0
- package/src/node/markdown/tableHeadCell.js +20 -0
- package/src/node/markdown/tableHeadRow.js +7 -0
- package/src/node/markdown/tableSeparator.js +7 -0
- package/src/node/markdown/tertiaryHeading.js +7 -0
- package/src/node/markdown/text.js +20 -0
- package/src/node/markdown/unorderedList.js +7 -0
- package/src/node/markdown/unorderedListItem.js +7 -0
- package/src/node/markdown/url.js +10 -0
- package/src/node/markdown/verticalSpace.js +22 -0
- package/src/node/markdown.js +100 -0
- package/src/nodeMap.js +140 -0
- package/src/ruleNameToHTMLMap.js +227 -0
- package/src/ruleNames.js +95 -0
- package/src/tokenTypes.js +59 -0
- package/src/utilities/childNodes.js +70 -0
- package/src/utilities/content.js +77 -0
- package/src/utilities/link.js +27 -0
- package/src/utilities/node.js +23 -0
- package/src/utilities/query.js +42 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
import AnchorMarkdownNode from "../../node/markdown/anchor";
|
|
7
|
+
|
|
8
|
+
import { FOOTNOTE_ITEM_RULE_NAME } from "../../ruleNames";
|
|
9
|
+
|
|
10
|
+
const { first, second } = arrayUtilities;
|
|
11
|
+
|
|
12
|
+
export default class FootnoteItemMarkdownNode extends MarkdownNode {
|
|
13
|
+
getIdentifier() {
|
|
14
|
+
const childNodes = this.getChildNodes(),
|
|
15
|
+
firstChildNode = first(childNodes),
|
|
16
|
+
anchorMarkdownNode = firstChildNode, ///
|
|
17
|
+
identifier = anchorMarkdownNode.getIdentifier();
|
|
18
|
+
|
|
19
|
+
return identifier;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromFootnoteMarkdownNodeAndIdentifier(footnoteMarkdownNode, identifier) {
|
|
23
|
+
const anchorMarkdownNode = AnchorMarkdownNode.fromIdentifier(identifier),
|
|
24
|
+
footnoteMarkdownNodeChildNodes = footnoteMarkdownNode.getChildNodes(),
|
|
25
|
+
secondFootnoteMarkdownNodeChildNode = second(footnoteMarkdownNodeChildNodes),
|
|
26
|
+
paragraphMarkdownNode = secondFootnoteMarkdownNodeChildNode, ///
|
|
27
|
+
ruleName = FOOTNOTE_ITEM_RULE_NAME,
|
|
28
|
+
childNodes = [
|
|
29
|
+
anchorMarkdownNode,
|
|
30
|
+
paragraphMarkdownNode
|
|
31
|
+
],
|
|
32
|
+
ambiguous = false,
|
|
33
|
+
footnoteItemMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndAmbiguous(FootnoteItemMarkdownNode, ruleName, childNodes, ambiguous);
|
|
34
|
+
|
|
35
|
+
return footnoteItemMarkdownNode;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
import FootnoteItemMarkdownNode from "./footnoteItem";
|
|
6
|
+
|
|
7
|
+
import { FOOTNOTES_LIST_RULE_NAME } from "../../ruleNames";
|
|
8
|
+
import { linkMarkdownNodesFromNode, footnoteMarkdownNodesFromNode } from "../../utilities/query";
|
|
9
|
+
|
|
10
|
+
export default class FootnotesListMarkdownNode extends MarkdownNode {
|
|
11
|
+
getIdentifiers() {
|
|
12
|
+
const childNodes = this.getChildNodes(),
|
|
13
|
+
footnoteItemMarkdownNodes = childNodes, ///
|
|
14
|
+
identifiers = footnoteItemMarkdownNodes.map((footnoteItemMarkdownNode) => {
|
|
15
|
+
const identifier = footnoteItemMarkdownNode.getIdentifier();
|
|
16
|
+
|
|
17
|
+
return identifier;
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return identifiers;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static fromDocumentMarkdownNode(documentMarkdownNode) {
|
|
24
|
+
let footnotesListMarkdownNode = null;
|
|
25
|
+
|
|
26
|
+
const footnoteItemMarkdownNodes = footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode),
|
|
27
|
+
footnoteItemMarkdownNodesLength = footnoteItemMarkdownNodes.length;
|
|
28
|
+
|
|
29
|
+
if (footnoteItemMarkdownNodesLength > 0) {
|
|
30
|
+
const ruleName = FOOTNOTES_LIST_RULE_NAME,
|
|
31
|
+
childNodes = footnoteItemMarkdownNodes, ///
|
|
32
|
+
ambiguous = false;
|
|
33
|
+
|
|
34
|
+
footnotesListMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndAmbiguous(FootnotesListMarkdownNode, ruleName, childNodes, ambiguous);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return footnotesListMarkdownNode;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode) {
|
|
42
|
+
const footnoteItemMarkdownNodes = [],
|
|
43
|
+
footnoteMarkdownNodes = footnoteMarkdownNodesFromNode(documentMarkdownNode),
|
|
44
|
+
linkMarkdownNodes = linkMarkdownNodesFromNode(documentMarkdownNode),
|
|
45
|
+
identifiers = footnoteMarkdownNodes.map((footnoteMarkdownNode) => {
|
|
46
|
+
const identifier = footnoteMarkdownNode.getIdentifier();
|
|
47
|
+
|
|
48
|
+
return identifier;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
linkMarkdownNodes.forEach((linkMarkdownNode) => {
|
|
52
|
+
const identifier = linkMarkdownNode.getIdentifier(),
|
|
53
|
+
index = identifiers.indexOf(identifier);
|
|
54
|
+
|
|
55
|
+
if (index > -1) {
|
|
56
|
+
const footnoteMarkdownNode = footnoteMarkdownNodes[index],
|
|
57
|
+
footnoteItemMarkdownNode = FootnoteItemMarkdownNode.fromFootnoteMarkdownNodeAndIdentifier(footnoteMarkdownNode, identifier);
|
|
58
|
+
|
|
59
|
+
footnoteItemMarkdownNodes.push(footnoteItemMarkdownNode);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return footnoteItemMarkdownNodes;
|
|
64
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
8
|
+
|
|
9
|
+
const { second, secondLast } = arrayUtilities;
|
|
10
|
+
|
|
11
|
+
export default class HyperlinkMarkdownNode extends MarkdownNode {
|
|
12
|
+
createDOMElement(context) {
|
|
13
|
+
const domElement = super.createDOMElement(context),
|
|
14
|
+
innerHTML = this.getInnerHTML(context),
|
|
15
|
+
href = this.getHref(context),
|
|
16
|
+
name = HREF_ATTRIBUTE_NAME,
|
|
17
|
+
value = href; ///
|
|
18
|
+
|
|
19
|
+
this.setAttribute(name, value);
|
|
20
|
+
|
|
21
|
+
this.setInnerHTML(innerHTML);
|
|
22
|
+
|
|
23
|
+
return domElement;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getInnerHTML(context) {
|
|
27
|
+
const childNodes = this.getChildNodes(),
|
|
28
|
+
secondChildNode = second(childNodes),
|
|
29
|
+
inlineTextMarkdownNode = secondChildNode, ///
|
|
30
|
+
inlineTextMarkdownNodeContent = inlineTextMarkdownNode.getContent(context),
|
|
31
|
+
innerHTML = inlineTextMarkdownNodeContent; ///
|
|
32
|
+
|
|
33
|
+
return innerHTML;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getHref(context) {
|
|
37
|
+
const childNodes = this.getChildNodes(),
|
|
38
|
+
secondLastChildNode = secondLast(childNodes),
|
|
39
|
+
URLMarkdownNode = secondLastChildNode, ///
|
|
40
|
+
URLMarkdownNodeContent = URLMarkdownNode.getContent(context),
|
|
41
|
+
href = URLMarkdownNodeContent; ///
|
|
42
|
+
|
|
43
|
+
return href;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(HyperlinkMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
47
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
import { SRC_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
8
|
+
|
|
9
|
+
const { second, secondLast } = arrayUtilities;
|
|
10
|
+
|
|
11
|
+
export default class ImageMarkdownNode extends MarkdownNode {
|
|
12
|
+
createDOMElement(context) {
|
|
13
|
+
const domElement = super.createDOMElement(context),
|
|
14
|
+
innerHTML = this.getInnerHTML(context),
|
|
15
|
+
src = this.getSrc(context),
|
|
16
|
+
name = SRC_ATTRIBUTE_NAME,
|
|
17
|
+
value = src; ///
|
|
18
|
+
|
|
19
|
+
this.setAttribute(name, value);
|
|
20
|
+
|
|
21
|
+
this.setInnerHTML(innerHTML);
|
|
22
|
+
|
|
23
|
+
return domElement;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getInnerHTML(context) {
|
|
27
|
+
const childNodes = this.getChildNodes(),
|
|
28
|
+
secondChildNode = second(childNodes),
|
|
29
|
+
inlineTextMarkdownNode = secondChildNode, ///
|
|
30
|
+
inlineTextMarkdownNodeContent = inlineTextMarkdownNode.getContent(context),
|
|
31
|
+
innerHTML = inlineTextMarkdownNodeContent; ///
|
|
32
|
+
|
|
33
|
+
return innerHTML;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getSrc(context) {
|
|
37
|
+
const childNodes = this.getChildNodes(),
|
|
38
|
+
secondLastChildNode = secondLast(childNodes),
|
|
39
|
+
URLMarkdownNode = secondLastChildNode, ///
|
|
40
|
+
URLMarkdownNodeContent = URLMarkdownNode.getContent(context),
|
|
41
|
+
src = URLMarkdownNodeContent; ///
|
|
42
|
+
|
|
43
|
+
return src;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(ImageMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
47
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { second } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class InlineListingMarkdownNode extends MarkdownNode {
|
|
10
|
+
getContent() {
|
|
11
|
+
const childNodes = this.getChildNodes(),
|
|
12
|
+
secondChildNode = second(childNodes),
|
|
13
|
+
blockTextMarkdownNode = secondChildNode, ///
|
|
14
|
+
content = blockTextMarkdownNode; ///
|
|
15
|
+
|
|
16
|
+
return content;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(InlineListingMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
20
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import contentMixins from "../../mixins/content";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../markdown";
|
|
6
|
+
|
|
7
|
+
class InlineTextMarkdownNode extends MarkdownNode {
|
|
8
|
+
createDOMElement(context) {
|
|
9
|
+
const content = this.getContent(context),
|
|
10
|
+
domElement = document.createTextNode(content);
|
|
11
|
+
|
|
12
|
+
this.setDOMElement(domElement);
|
|
13
|
+
|
|
14
|
+
return domElement;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(InlineTextMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.assign(InlineTextMarkdownNode.prototype, contentMixins);
|
|
21
|
+
|
|
22
|
+
export default InlineTextMarkdownNode;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
import { domElementsFromChildNodes } from "../../utilities/childNodes";
|
|
6
|
+
|
|
7
|
+
export default class LineMarkdownNode extends MarkdownNode {
|
|
8
|
+
createChildNodeDOMElements(context) {
|
|
9
|
+
const domElement = this.getDOMElement(),
|
|
10
|
+
childNodes = this.getChildNodes(),
|
|
11
|
+
domElements = domElementsFromChildNodes(childNodes, context),
|
|
12
|
+
parentDOMElement = domElement, ///
|
|
13
|
+
siblingDOMElement = null;
|
|
14
|
+
|
|
15
|
+
domElements.forEach((domElement) => {
|
|
16
|
+
parentDOMElement.insertBefore(domElement, siblingDOMElement);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(LineMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
21
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class LineBreakMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(LineBreakMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
import { EMPTY_STRING } from "../../constants";
|
|
8
|
+
import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
9
|
+
|
|
10
|
+
const { second } = arrayUtilities;
|
|
11
|
+
|
|
12
|
+
export default class LinkMarkdownNode extends MarkdownNode {
|
|
13
|
+
createDOMElement(context) {
|
|
14
|
+
const domElement = super.createDOMElement(context),
|
|
15
|
+
href = this.getHRef(),
|
|
16
|
+
name = HREF_ATTRIBUTE_NAME,
|
|
17
|
+
value = href; ///
|
|
18
|
+
|
|
19
|
+
this.setAttribute(name, value);
|
|
20
|
+
|
|
21
|
+
return domElement;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getIdentifier() {
|
|
25
|
+
const childNodes = this.getChildNodes(),
|
|
26
|
+
secondChildNode = second(childNodes),
|
|
27
|
+
textMarkdownNode = secondChildNode, ///
|
|
28
|
+
textMarkdownNodeContent = textMarkdownNode.getContent(),
|
|
29
|
+
identifier = textMarkdownNodeContent; ///
|
|
30
|
+
|
|
31
|
+
return identifier;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getHRef() {
|
|
35
|
+
const identifier = this.getIdentifier(),
|
|
36
|
+
href = `#${identifier}`;
|
|
37
|
+
|
|
38
|
+
return href;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
clear() {
|
|
42
|
+
const innerHTML = EMPTY_STRING;
|
|
43
|
+
|
|
44
|
+
this.setInnerHTML(innerHTML);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
setNumber(number) {
|
|
48
|
+
const innerHTML = `${number}`;
|
|
49
|
+
|
|
50
|
+
this.setInnerHTML(innerHTML);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(LinkMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
54
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
import { START_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
8
|
+
|
|
9
|
+
const { first } = arrayUtilities;
|
|
10
|
+
|
|
11
|
+
export default class OrderedListMarkdownNode extends MarkdownNode {
|
|
12
|
+
createDOMElement(context) {
|
|
13
|
+
const domElement = super.createDOMElement(context),
|
|
14
|
+
start = this.getStart(),
|
|
15
|
+
name = START_ATTRIBUTE_NAME, ///
|
|
16
|
+
value = start; ///
|
|
17
|
+
|
|
18
|
+
this.setAttribute(name, value);
|
|
19
|
+
|
|
20
|
+
return domElement;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
getStart() {
|
|
24
|
+
const childNodes = this.getChildNodes(),
|
|
25
|
+
firstChildNode = first(childNodes),
|
|
26
|
+
firstOrderedListItemMarkdownNode = firstChildNode, ///
|
|
27
|
+
start = firstOrderedListItemMarkdownNode.getStart();
|
|
28
|
+
|
|
29
|
+
return start;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(OrderedListMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { first } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class OrderedListItemMarkdownNode extends MarkdownNode {
|
|
10
|
+
getStart() {
|
|
11
|
+
const childNodes = this.getChildNodes(),
|
|
12
|
+
firstChildNode = first(childNodes),
|
|
13
|
+
markerTerminalNode = firstChildNode, ///
|
|
14
|
+
markerTerminalNodeContent = markerTerminalNode.getContent(),
|
|
15
|
+
start = markerTerminalNodeContent; ///
|
|
16
|
+
|
|
17
|
+
return start;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(OrderedListItemMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
21
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class ParagraphMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(ParagraphMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class PrimaryHeadingMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(PrimaryHeadingMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class QuaternaryHeadingMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(QuaternaryHeadingMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { second } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class ReferenceMarkdownNode extends MarkdownNode {
|
|
10
|
+
getIdentifier() {
|
|
11
|
+
const childNodes = this.getChildNodes(),
|
|
12
|
+
secondChildNode = second(childNodes),
|
|
13
|
+
textMarkdownNode = secondChildNode, ///
|
|
14
|
+
textMarkdownNodeContent = textMarkdownNode.getContent(),
|
|
15
|
+
identifier = textMarkdownNodeContent; ///
|
|
16
|
+
|
|
17
|
+
return identifier;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(ReferenceMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
21
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class SecondaryHeadingMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(SecondaryHeadingMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import contentMixins from "../../mixins/content";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../markdown";
|
|
6
|
+
|
|
7
|
+
class StrongTextMarkdownNode extends MarkdownNode {
|
|
8
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(StrongTextMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
Object.assign(StrongTextMarkdownNode.prototype, contentMixins);
|
|
12
|
+
|
|
13
|
+
export default StrongTextMarkdownNode;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import contentMixins from "../../mixins/content";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../markdown";
|
|
6
|
+
import ruleNameToHTMLMap from "../../ruleNameToHTMLMap";
|
|
7
|
+
|
|
8
|
+
import { STRONG_TEXT_RULE_NAME } from "../../ruleNames";
|
|
9
|
+
|
|
10
|
+
const strongTextHTML = ruleNameToHTMLMap[STRONG_TEXT_RULE_NAME],
|
|
11
|
+
{ tagName: strongTextTagName } = strongTextHTML;
|
|
12
|
+
|
|
13
|
+
class StronglyEmphasisedTextMarkdownNode extends MarkdownNode {
|
|
14
|
+
createDOMElement(context) {
|
|
15
|
+
let domElement = super.createDOMElement(context);
|
|
16
|
+
|
|
17
|
+
const childDOMElement = domElement, ///
|
|
18
|
+
tagName = strongTextTagName; ///
|
|
19
|
+
|
|
20
|
+
domElement = document.createElement(tagName);
|
|
21
|
+
|
|
22
|
+
this.setDOMElement(domElement);
|
|
23
|
+
|
|
24
|
+
const parentDOMElement = domElement, ///
|
|
25
|
+
siblingDOMElement = null;
|
|
26
|
+
|
|
27
|
+
domElement = childDOMElement; ///
|
|
28
|
+
|
|
29
|
+
parentDOMElement.insertBefore(domElement, siblingDOMElement);
|
|
30
|
+
|
|
31
|
+
return domElement;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(StronglyEmphasisedTextMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
Object.assign(StronglyEmphasisedTextMarkdownNode.prototype, contentMixins);
|
|
38
|
+
|
|
39
|
+
export default StronglyEmphasisedTextMarkdownNode;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableBodyMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableBodyMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { first } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class TableBodyCellMarkdownNode extends MarkdownNode {
|
|
10
|
+
createChildNodeDOMElements(context) {
|
|
11
|
+
const domElement = this.getDOMElement(),
|
|
12
|
+
childNodes = this.getChildNodes(),
|
|
13
|
+
firstChildNode = first(childNodes),
|
|
14
|
+
tableCellMarkdownNode = firstChildNode; ///
|
|
15
|
+
|
|
16
|
+
tableCellMarkdownNode.createChildNodeDOMElements(domElement, context);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableBodyCellMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
20
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableBodyRowMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableBodyRowMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
import TextMarkdownNode from "./text";
|
|
7
|
+
|
|
8
|
+
import { PERIOD } from "../../constants";
|
|
9
|
+
import { domElementsFromChildNodes } from "../../utilities/childNodes";
|
|
10
|
+
|
|
11
|
+
const { first } = arrayUtilities;
|
|
12
|
+
|
|
13
|
+
export default class TableCellMarkdownNode extends MarkdownNode {
|
|
14
|
+
createChildNodeDOMElements(domElement, context) {
|
|
15
|
+
const childNodes = this.getChildNodes(),
|
|
16
|
+
childNodesLength = childNodes.length;
|
|
17
|
+
|
|
18
|
+
if (childNodesLength === 2) {
|
|
19
|
+
const firstChildNode = first(childNodes),
|
|
20
|
+
firstChildNodeTextMarkdownNode = (firstChildNode instanceof TextMarkdownNode);
|
|
21
|
+
|
|
22
|
+
if (firstChildNodeTextMarkdownNode) {
|
|
23
|
+
const textMarkdownNode = firstChildNode, ///
|
|
24
|
+
content = textMarkdownNode.getContent();
|
|
25
|
+
|
|
26
|
+
if (content === PERIOD) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const domElements = domElementsFromChildNodes(childNodes, context),
|
|
33
|
+
parentDOMElement = domElement, ///
|
|
34
|
+
siblingDOMElement = null;
|
|
35
|
+
|
|
36
|
+
domElements.forEach((domElement) => {
|
|
37
|
+
parentDOMElement.insertBefore(domElement, siblingDOMElement);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableCellMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
42
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableHeadMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableHeadMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { first } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class TableHeadCellMarkdownNode extends MarkdownNode {
|
|
10
|
+
createChildNodeDOMElements(context) {
|
|
11
|
+
const domElement = this.getDOMElement(),
|
|
12
|
+
childNodes = this.getChildNodes(),
|
|
13
|
+
firstChildNode = first(childNodes),
|
|
14
|
+
tableCellMarkdownNode = firstChildNode; ///
|
|
15
|
+
|
|
16
|
+
tableCellMarkdownNode.createChildNodeDOMElements(domElement, context);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableHeadCellMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
20
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableHeadRowMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableHeadRowMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TableSeparatorMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TableSeparatorMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class TertiaryHeadingMarkdownNode extends MarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TertiaryHeadingMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { first } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class TextMarkdownNode extends MarkdownNode {
|
|
10
|
+
getContent() {
|
|
11
|
+
const childNodes = this.getChildNodes(),
|
|
12
|
+
firstChildNode = first(childNodes),
|
|
13
|
+
terminalNode = firstChildNode, ///
|
|
14
|
+
content = terminalNode.getContent();
|
|
15
|
+
|
|
16
|
+
return content;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(TextMarkdownNode, ruleName, childNodes, ambiguous); }
|
|
20
|
+
}
|