highmark-markdown 0.0.2 → 0.0.4

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.
Files changed (73) hide show
  1. package/example.js +752 -618
  2. package/lib/example/view/textarea/bnf.js +3 -10
  3. package/lib/example/view/textarea/lexicalEntries.js +3 -16
  4. package/lib/example/view/textarea/parseTree.js +3 -3
  5. package/lib/example/view/{div/previewPane.js → xmp.js} +13 -65
  6. package/lib/example/view.js +11 -19
  7. package/lib/mixins/content.js +5 -5
  8. package/lib/node/markdown/anchor.js +12 -29
  9. package/lib/node/markdown/blockListing.js +32 -5
  10. package/lib/node/markdown/blockText.js +9 -2
  11. package/lib/node/markdown/document.js +26 -5
  12. package/lib/node/markdown/endOfLine.js +11 -4
  13. package/lib/node/markdown/error.js +9 -34
  14. package/lib/node/markdown/footnote.js +4 -4
  15. package/lib/node/markdown/footnoteItem.js +3 -3
  16. package/lib/node/markdown/footnotesList.js +10 -10
  17. package/lib/node/markdown/hyperlink.js +20 -38
  18. package/lib/node/markdown/image.js +27 -38
  19. package/lib/node/markdown/inlineListing.js +2 -12
  20. package/lib/node/markdown/inlineText.js +9 -2
  21. package/lib/node/markdown/line.js +11 -4
  22. package/lib/node/markdown/link.js +24 -48
  23. package/lib/node/markdown/orderedList.js +9 -33
  24. package/lib/node/markdown/orderedListItem.js +3 -3
  25. package/lib/node/markdown/reference.js +4 -4
  26. package/lib/node/markdown/stronglyEmphasisedText.js +12 -3
  27. package/lib/node/markdown/tableBodyCell.js +8 -1
  28. package/lib/node/markdown/tableCell.js +31 -8
  29. package/lib/node/markdown/tableHeadCell.js +8 -1
  30. package/lib/node/markdown/text.js +3 -3
  31. package/lib/node/markdown/verticalSpace.js +9 -5
  32. package/lib/node/markdown.js +109 -14
  33. package/lib/ruleNameToHTMLMap.js +2 -2
  34. package/lib/utilities/childNodes.js +53 -4
  35. package/lib/utilities/link.js +32 -6
  36. package/lib/utilities/string.js +52 -0
  37. package/package.json +1 -1
  38. package/src/example/view/textarea/bnf.js +2 -10
  39. package/src/example/view/textarea/lexicalEntries.js +2 -18
  40. package/src/example/view/textarea/parseTree.js +2 -2
  41. package/src/example/view/xmp.js +28 -0
  42. package/src/example/view.js +26 -35
  43. package/src/mixins/content.js +2 -2
  44. package/src/node/markdown/anchor.js +8 -6
  45. package/src/node/markdown/blockListing.js +9 -3
  46. package/src/node/markdown/blockText.js +8 -1
  47. package/src/node/markdown/document.js +30 -5
  48. package/src/node/markdown/endOfLine.js +9 -2
  49. package/src/node/markdown/error.js +12 -11
  50. package/src/node/markdown/footnote.js +2 -2
  51. package/src/node/markdown/footnoteItem.js +1 -1
  52. package/src/node/markdown/footnotesList.js +11 -9
  53. package/src/node/markdown/hyperlink.js +21 -20
  54. package/src/node/markdown/image.js +25 -17
  55. package/src/node/markdown/inlineListing.js +0 -13
  56. package/src/node/markdown/inlineText.js +8 -1
  57. package/src/node/markdown/line.js +14 -6
  58. package/src/node/markdown/link.js +24 -25
  59. package/src/node/markdown/orderedList.js +7 -11
  60. package/src/node/markdown/orderedListItem.js +1 -1
  61. package/src/node/markdown/reference.js +4 -4
  62. package/src/node/markdown/stronglyEmphasisedText.js +14 -4
  63. package/src/node/markdown/tableBodyCell.js +9 -0
  64. package/src/node/markdown/tableCell.js +36 -7
  65. package/src/node/markdown/tableHeadCell.js +9 -0
  66. package/src/node/markdown/text.js +1 -1
  67. package/src/node/markdown/verticalSpace.js +7 -8
  68. package/src/node/markdown.js +148 -11
  69. package/src/ruleNameToHTMLMap.js +1 -1
  70. package/src/utilities/childNodes.js +62 -0
  71. package/src/utilities/link.js +48 -5
  72. package/src/utilities/string.js +55 -0
  73. package/src/example/view/div/previewPane.js +0 -82
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style";
4
+
5
+ import { Element } from "easy";
6
+
7
+ class XMP extends Element {
8
+ parentContext() {
9
+ const xmpHTML = this.html.bind(this); ///
10
+
11
+ return ({
12
+ xmpHTML
13
+ });
14
+ }
15
+
16
+ static tagName = "xmp";
17
+ }
18
+
19
+ export default withStyle(XMP)`
20
+
21
+ width: 100%;
22
+ border: 1px solid darkgrey;
23
+ padding: 0.25rem;
24
+ font-size: 1.2rem;
25
+ line-height: 1.5rem;
26
+ font-family: monospace;
27
+
28
+ `;
@@ -3,24 +3,24 @@
3
3
  import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import { Element } from "easy";
6
- import { parserUtilities } from "occam-parsers";
7
6
  import { RowDiv, RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv, HorizontalSplitterDiv } from "easy-layout";
8
7
 
8
+ import XMP from "./view/xmp";
9
9
  import SubHeading from "./view/subHeading";
10
10
  import BNFTextarea from "./view/textarea/bnf";
11
- import PreviewPaneDiv from "./view/div/previewPane";
12
11
  import LeftSizeableDiv from "./view/div/sizeable/left";
13
12
  import RightSizeableDiv from "./view/div/sizeable/right";
14
13
  import MarkdownTextarea from "./view/textarea/markdown";
15
14
  import ParseTreeTextarea from "./view/textarea/parseTree";
16
15
  import LexicalEntriesTextarea from "./view/textarea/lexicalEntries";
17
16
 
18
- import { nodeMap, MarkdownLexer, MarkdownParser, nodeUtilities } from "../index";
17
+ import { MarkdownLexer, MarkdownParser } from "../index";
19
18
 
20
19
  const { bnf } = MarkdownParser,
21
- { entries } = MarkdownLexer,
22
- { rulesFromBNF } = parserUtilities,
23
- { setNonTerminalNodes } = nodeUtilities;
20
+ { entries } = MarkdownLexer;
21
+
22
+ const markdownLexer = MarkdownLexer.fromNothing(),
23
+ markdownParser = MarkdownParser.fromNothing();
24
24
 
25
25
  class View extends Element {
26
26
  keyUpHandler = (event, element) => {
@@ -28,23 +28,23 @@ class View extends Element {
28
28
  }
29
29
 
30
30
  update() {
31
- const bnf = this.getBNF(),
32
- markdown = this.getMarkdown(),
33
- lexicalEntries = this.getLexicalEntries();
34
-
35
- const rules = rulesFromBNF(bnf),
36
- lexer = lexerFromLexicalEntries(lexicalEntries),
37
- parser = parserFromRules(rules),
38
- content = markdown; ///
39
-
40
- const tokens = lexer.tokenise(content),
31
+ const markdown = this.getMarkdown(),
32
+ lexer = markdownLexer, ///
33
+ parser = markdownParser, ///
34
+ content = markdown, ///
35
+ tokens = lexer.tokenise(content),
41
36
  node = parser.parse(tokens);
42
37
 
43
- this.updatePreviewPaneDiv(node, tokens);
44
-
45
38
  let parseTree = null;
46
39
 
47
40
  if (node !== null) {
41
+ const context = {
42
+ tokens
43
+ },
44
+ html = node.asHTML(context);
45
+
46
+ this.xmpHTML(html);
47
+
48
48
  parseTree = node.asParseTree(tokens);
49
49
  }
50
50
 
@@ -73,7 +73,7 @@ class View extends Element {
73
73
  <ColumnDiv>
74
74
  <RowsDiv>
75
75
  <RightSizeableDiv>
76
- <PreviewPaneDiv/>
76
+ <XMP/>
77
77
  </RightSizeableDiv>
78
78
  <HorizontalSplitterDiv/>
79
79
  <RowDiv>
@@ -107,7 +107,13 @@ class View extends Element {
107
107
  this.update();
108
108
  }
109
109
 
110
- static initialMarkdown = `This is a paragraph.
110
+ static initialMarkdown = `A paragraph...
111
+
112
+
113
+ Another paragraph!
114
+
115
+ And yet another'
116
+ \`\`\`
111
117
  `;
112
118
 
113
119
  static tagName = "div";
@@ -122,18 +128,3 @@ export default withStyle(View)`
122
128
  padding: 1rem;
123
129
 
124
130
  `;
125
-
126
- function lexerFromLexicalEntries(lexicalEntries) {
127
- const entries = lexicalEntries, ///
128
- lexer = MarkdownLexer.fromEntries(entries); ///
129
-
130
- return lexer;
131
- }
132
-
133
- function parserFromRules(rules) {
134
- const parser = MarkdownParser.fromRules(rules); ///
135
-
136
- setNonTerminalNodes(parser, nodeMap);
137
-
138
- return parser;
139
- }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { contentFromMarkdownNodes } from "../utilities/content";
4
4
 
5
- function getContent(context) {
5
+ function content(context) {
6
6
  const markdownNode = this, ///
7
7
  markdownNodes = [
8
8
  markdownNode
@@ -13,7 +13,7 @@ function getContent(context) {
13
13
  }
14
14
 
15
15
  const contentMixins = {
16
- getContent
16
+ content
17
17
  };
18
18
 
19
19
  export default contentMixins;
@@ -16,14 +16,16 @@ export default class AnchorMarkdownNode extends MarkdownNode {
16
16
  return this.identifier;
17
17
  }
18
18
 
19
- createDOMElement(context) {
20
- const domElement = super.createDOMElement(context),
21
- name = ID_ATTRIBUTE_NAME,
22
- value = this.identifier;
19
+ attributeName() {
20
+ const attributeName = ID_ATTRIBUTE_NAME;
23
21
 
24
- this.setAttribute(name, value);
22
+ return attributeName;
23
+ }
24
+
25
+ attributeValue(context) {
26
+ const attributeValue = this.identifier; ///
25
27
 
26
- return domElement;
28
+ return attributeValue;
27
29
  }
28
30
 
29
31
  static fromIdentifier(identifier) {
@@ -7,20 +7,26 @@ import MarkdownNode from "../../node/markdown";
7
7
  const { first, second } = arrayUtilities;
8
8
 
9
9
  export default class BlockListingMarkdownNode extends MarkdownNode {
10
- getContent() {
10
+ content(context) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  secondChildNode = second(childNodes),
13
13
  blockTextMarkdownNode = secondChildNode, ///
14
- content = blockTextMarkdownNode; ///
14
+ content = blockTextMarkdownNode.content(context);
15
15
 
16
16
  return content;
17
17
  }
18
18
 
19
19
  getClassName() {
20
+ let className = super.getClassName();
21
+
20
22
  const childNodes = this.getChildNodes(),
21
23
  firstChildNode = first(childNodes),
22
24
  blockListingStartMarkdownNode = firstChildNode, ///
23
- className = blockListingStartMarkdownNode.getClassName(); ///
25
+ blockListingStartMarkdownNodeClassName = blockListingStartMarkdownNode.getClassName();
26
+
27
+ if (blockListingStartMarkdownNodeClassName !== null) {
28
+ className = `${className} ${blockListingStartMarkdownNodeClassName}`;
29
+ }
24
30
 
25
31
  return className;
26
32
  }
@@ -5,8 +5,15 @@ import contentMixins from "../../mixins/content";
5
5
  import MarkdownNode from "../markdown";
6
6
 
7
7
  class BlockTextMarkdownNode extends MarkdownNode {
8
+ asHTML(indent, context) {
9
+ const content = this.content(context),
10
+ html = content; ///
11
+
12
+ return html;
13
+ }
14
+
8
15
  createDOMElement(context) {
9
- const content = this.getContent(context),
16
+ const content = this.content(context),
10
17
  domElement = document.createTextNode(content);
11
18
 
12
19
  this.setDOMElement(domElement);
@@ -3,21 +3,46 @@
3
3
  import MarkdownNode from "../../node/markdown";
4
4
  import FootnotesListMarkdownNode from "../../node/markdown/footnotesList";
5
5
 
6
- import { renumberLinkMarkdownNodes } from "../../utilities/link";
6
+ import { EMPTY_STRING } from "../../constants";
7
+ import { renumberLinkMarkdownNodes, renumberLinkMarkdownNodesHTML } from "../../utilities/link";
7
8
 
8
9
  export default class DocumentMarkdownNode extends MarkdownNode {
10
+ adjustIndent(indent) {
11
+ indent = EMPTY_STRING;
12
+
13
+ return indent;
14
+ }
15
+
16
+ childNodesAsHTML(indent, context) {
17
+ const documentMarkdownNode = this, ///
18
+ footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDocumentMarkdownNode(documentMarkdownNode, context);
19
+
20
+ let childNodesHTML = super.childNodesAsHTML(indent, context);
21
+
22
+ if (footnotesListMarkdownNode !== null) {
23
+ const footnotesListMarkdownNodeHTML = footnotesListMarkdownNode.asHTML(indent, context);
24
+
25
+ childNodesHTML = `${childNodesHTML}${footnotesListMarkdownNodeHTML}`;
26
+
27
+ childNodesHTML = renumberLinkMarkdownNodesHTML(childNodesHTML, documentMarkdownNode, footnotesListMarkdownNode, context);
28
+ }
29
+
30
+ return childNodesHTML;
31
+ }
32
+
9
33
  createChildNodeDOMElements(context) {
10
34
  const documentMarkdownNode = this, ///
11
- footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDocumentMarkdownNode(documentMarkdownNode);
35
+ footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDocumentMarkdownNode(documentMarkdownNode, context);
12
36
 
13
37
  super.createChildNodeDOMElements(context);
14
38
 
15
39
  if (footnotesListMarkdownNode !== null) {
16
- const domElement = footnotesListMarkdownNode.createDOMElement(context);
40
+ const footnotesListMarkdownNodeDOMElement = footnotesListMarkdownNode.createDOMElement(context),
41
+ childNodeDOMElement = footnotesListMarkdownNodeDOMElement; ///
17
42
 
18
- this.insertDOMElement(domElement);
43
+ this.insertDOMElement(childNodeDOMElement);
19
44
 
20
- renumberLinkMarkdownNodes(documentMarkdownNode, footnotesListMarkdownNode);
45
+ renumberLinkMarkdownNodes(documentMarkdownNode, footnotesListMarkdownNode, context);
21
46
  }
22
47
  }
23
48
 
@@ -3,8 +3,15 @@
3
3
  import MarkdownNode from "../../node/markdown";
4
4
 
5
5
  export default class EndOfLineMarkdownNode extends MarkdownNode {
6
+ asHTML(indent, context) {
7
+ const content = this.content(context),
8
+ html = content; ///
9
+
10
+ return html;
11
+ }
12
+
6
13
  createDOMElement(context) {
7
- const content = this.getContent(context),
14
+ const content = this.content(context),
8
15
  domElement = document.createTextNode(content);
9
16
 
10
17
  this.setDOMElement(domElement);
@@ -12,7 +19,7 @@ export default class EndOfLineMarkdownNode extends MarkdownNode {
12
19
  return domElement;
13
20
  }
14
21
 
15
- getContent() {
22
+ content(context) {
16
23
  const firstSignificantToken = this.getFirstSignificantToken(),
17
24
  endOfLineToken = firstSignificantToken, ///
18
25
  content = endOfLineToken.getContent();
@@ -7,23 +7,24 @@ import MarkdownNode from "../../node/markdown";
7
7
  const { first } = arrayUtilities;
8
8
 
9
9
  export default class ErrorMarkdownNode extends MarkdownNode {
10
- createDOMElement(context) {
11
- const domElement = super.createDOMElement(context),
12
- content = this.getContent(context),
13
- textContent = content; ///
10
+ childNodesAsHTML(indent, context) {
11
+ const content = this.content(context),
12
+ childNodesHTML = content; ///
14
13
 
15
- Object.assign(domElement, {
16
- textContent
17
- });
18
-
19
- return domElement;
14
+ return childNodesHTML;
20
15
  }
21
16
 
22
17
  createChildNodeDOMElements(context) {
23
- ///
18
+ const content = this.content(context),
19
+ domElement = this.getDOMElement(),
20
+ parentDOMElement = domElement, ///
21
+ siblingDOMElement = null,
22
+ childNodeDOMElement = document.createTextNode(content);
23
+
24
+ parentDOMElement.insertBefore(childNodeDOMElement, siblingDOMElement);
24
25
  }
25
26
 
26
- getContent() {
27
+ content(context) {
27
28
  const childNodes = this.getChildNodes(),
28
29
  firstChildNode = first(childNodes),
29
30
  terminalNode = firstChildNode, ///
@@ -7,11 +7,11 @@ import MarkdownNode from "../../node/markdown";
7
7
  const { first } = arrayUtilities;
8
8
 
9
9
  export default class FootnoteMarkdownNode extends MarkdownNode {
10
- getIdentifier() {
10
+ identifier(context) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  firstChildNode = first(childNodes),
13
13
  referenceMarkdownNode = firstChildNode, ///
14
- referenceMarkdownNodeIdentifier = referenceMarkdownNode.getIdentifier(),
14
+ referenceMarkdownNodeIdentifier = referenceMarkdownNode.identifier(context),
15
15
  identifier = referenceMarkdownNodeIdentifier; ///
16
16
 
17
17
  return identifier;
@@ -10,7 +10,7 @@ import { FOOTNOTE_ITEM_RULE_NAME } from "../../ruleNames";
10
10
  const { first, second } = arrayUtilities;
11
11
 
12
12
  export default class FootnoteItemMarkdownNode extends MarkdownNode {
13
- getIdentifier() {
13
+ identifier(context) {
14
14
  const childNodes = this.getChildNodes(),
15
15
  firstChildNode = first(childNodes),
16
16
  anchorMarkdownNode = firstChildNode, ///
@@ -8,11 +8,11 @@ import { FOOTNOTES_LIST_RULE_NAME } from "../../ruleNames";
8
8
  import { linkMarkdownNodesFromNode, footnoteMarkdownNodesFromNode } from "../../utilities/query";
9
9
 
10
10
  export default class FootnotesListMarkdownNode extends MarkdownNode {
11
- getIdentifiers() {
11
+ identifiers(context) {
12
12
  const childNodes = this.getChildNodes(),
13
13
  footnoteItemMarkdownNodes = childNodes, ///
14
14
  identifiers = footnoteItemMarkdownNodes.map((footnoteItemMarkdownNode) => {
15
- const identifier = footnoteItemMarkdownNode.getIdentifier();
15
+ const identifier = footnoteItemMarkdownNode.identifier(context);
16
16
 
17
17
  return identifier;
18
18
  });
@@ -20,10 +20,10 @@ export default class FootnotesListMarkdownNode extends MarkdownNode {
20
20
  return identifiers;
21
21
  }
22
22
 
23
- static fromDocumentMarkdownNode(documentMarkdownNode) {
23
+ static fromDocumentMarkdownNode(documentMarkdownNode, context) {
24
24
  let footnotesListMarkdownNode = null;
25
25
 
26
- const footnoteItemMarkdownNodes = footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode),
26
+ const footnoteItemMarkdownNodes = footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode, context),
27
27
  footnoteItemMarkdownNodesLength = footnoteItemMarkdownNodes.length;
28
28
 
29
29
  if (footnoteItemMarkdownNodesLength > 0) {
@@ -38,18 +38,20 @@ export default class FootnotesListMarkdownNode extends MarkdownNode {
38
38
  }
39
39
  }
40
40
 
41
- function footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode) {
41
+ function footnoteItemMarkdownNodesFromDocumentMarkdownNode(documentMarkdownNode, context) {
42
42
  const footnoteItemMarkdownNodes = [],
43
- footnoteMarkdownNodes = footnoteMarkdownNodesFromNode(documentMarkdownNode),
44
- linkMarkdownNodes = linkMarkdownNodesFromNode(documentMarkdownNode),
43
+ node = documentMarkdownNode, ///
44
+ linkMarkdownNodes = linkMarkdownNodesFromNode(node),
45
+ footnoteMarkdownNodes = footnoteMarkdownNodesFromNode(node),
45
46
  identifiers = footnoteMarkdownNodes.map((footnoteMarkdownNode) => {
46
- const identifier = footnoteMarkdownNode.getIdentifier();
47
+ const identifier = footnoteMarkdownNode.identifier(context);
47
48
 
48
49
  return identifier;
49
50
  });
50
51
 
51
52
  linkMarkdownNodes.forEach((linkMarkdownNode) => {
52
- const identifier = linkMarkdownNode.getIdentifier(),
53
+ const linkMarkdownNodeIdentifier = linkMarkdownNode.identifier(context),
54
+ identifier = linkMarkdownNodeIdentifier, ///
53
55
  index = identifiers.indexOf(identifier);
54
56
 
55
57
  if (index > -1) {
@@ -9,38 +9,39 @@ import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
9
9
  const { second, secondLast } = arrayUtilities;
10
10
 
11
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);
12
+ childNodesAsHTML(indent, context) {
13
+ const childNodes = this.getChildNodes(),
14
+ secondChildNode = second(childNodes),
15
+ inlineTextMarkdownNode = secondChildNode, ///
16
+ inlineTextMarkdownNodeHTML = inlineTextMarkdownNode.asHTML(indent, context),
17
+ childNodesHTML = inlineTextMarkdownNodeHTML; ///
22
18
 
23
- return domElement;
19
+ return childNodesHTML;
24
20
  }
25
21
 
26
- getInnerHTML(context) {
22
+ createChildNodeDOMElements(context) {
27
23
  const childNodes = this.getChildNodes(),
28
24
  secondChildNode = second(childNodes),
29
- inlineTextMarkdownNode = secondChildNode, ///
30
- inlineTextMarkdownNodeContent = inlineTextMarkdownNode.getContent(context),
31
- innerHTML = inlineTextMarkdownNodeContent; ///
25
+ inlineTextMarkdownNode = secondChildNode, ///
26
+ inlineTextMarkdownNodeDOMElement = inlineTextMarkdownNode.createDOMElement(context);
27
+
28
+ this.insertDOMElement(inlineTextMarkdownNodeDOMElement);
29
+ }
30
+
31
+ attributeName() {
32
+ const attributeName = HREF_ATTRIBUTE_NAME;
32
33
 
33
- return innerHTML;
34
+ return attributeName;
34
35
  }
35
36
 
36
- getHref(context) {
37
+ attributeValue(context) {
37
38
  const childNodes = this.getChildNodes(),
38
39
  secondLastChildNode = secondLast(childNodes),
39
40
  URLMarkdownNode = secondLastChildNode, ///
40
- URLMarkdownNodeContent = URLMarkdownNode.getContent(context),
41
- href = URLMarkdownNodeContent; ///
41
+ URLMarkdownNodeContent = URLMarkdownNode.content(context),
42
+ attributeValue = URLMarkdownNodeContent; ///
42
43
 
43
- return href;
44
+ return attributeValue;
44
45
  }
45
46
 
46
47
  static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(HyperlinkMarkdownNode, ruleName, childNodes, ambiguous); }
@@ -9,38 +9,46 @@ import { SRC_ATTRIBUTE_NAME } from "../../attributeNames";
9
9
  const { second, secondLast } = arrayUtilities;
10
10
 
11
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; ///
12
+ childNodesAsHTML(indent, context) {
13
+ const content = this.content(context),
14
+ childNodesHTML = content; ///
18
15
 
19
- this.setAttribute(name, value);
16
+ return childNodesHTML;
17
+ }
20
18
 
21
- this.setInnerHTML(innerHTML);
19
+ createChildNodeDOMElements(context) {
20
+ const content = this.content(context),
21
+ domElement = this.getDOMElement(),
22
+ parentDOMElement = domElement, ///
23
+ siblingDOMElement = null,
24
+ childNodeDOMElement = document.createTextNode(content);
22
25
 
23
- return domElement;
26
+ parentDOMElement.insertBefore(childNodeDOMElement, siblingDOMElement);
24
27
  }
25
28
 
26
- getInnerHTML(context) {
29
+ content(context) {
27
30
  const childNodes = this.getChildNodes(),
28
31
  secondChildNode = second(childNodes),
29
32
  inlineTextMarkdownNode = secondChildNode, ///
30
- inlineTextMarkdownNodeContent = inlineTextMarkdownNode.getContent(context),
31
- innerHTML = inlineTextMarkdownNodeContent; ///
33
+ content = inlineTextMarkdownNode.content(context);
34
+
35
+ return content;
36
+ }
37
+
38
+ attributeName() {
39
+ const attributeName = SRC_ATTRIBUTE_NAME;
32
40
 
33
- return innerHTML;
41
+ return attributeName;
34
42
  }
35
43
 
36
- getSrc(context) {
44
+ attributeValue(context) {
37
45
  const childNodes = this.getChildNodes(),
38
46
  secondLastChildNode = secondLast(childNodes),
39
47
  URLMarkdownNode = secondLastChildNode, ///
40
- URLMarkdownNodeContent = URLMarkdownNode.getContent(context),
41
- src = URLMarkdownNodeContent; ///
48
+ URLMarkdownNodeContent = URLMarkdownNode.content(context),
49
+ attributeValue = URLMarkdownNodeContent; ///
42
50
 
43
- return src;
51
+ return attributeValue;
44
52
  }
45
53
 
46
54
  static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(ImageMarkdownNode, ruleName, childNodes, ambiguous); }
@@ -1,20 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
3
  import MarkdownNode from "../../node/markdown";
6
4
 
7
- const { second } = arrayUtilities;
8
-
9
5
  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
6
  static fromRuleNameChildNodesAndAmbiguous(ruleName, childNodes, ambiguous) { return MarkdownNode.fromRuleNameChildNodesAndAmbiguous(InlineListingMarkdownNode, ruleName, childNodes, ambiguous); }
20
7
  }
@@ -5,8 +5,15 @@ import contentMixins from "../../mixins/content";
5
5
  import MarkdownNode from "../markdown";
6
6
 
7
7
  class InlineTextMarkdownNode extends MarkdownNode {
8
+ asHTML(indent, context) {
9
+ const content = this.content(context),
10
+ html = content; ///
11
+
12
+ return html;
13
+ }
14
+
8
15
  createDOMElement(context) {
9
- const content = this.getContent(context),
16
+ const content = this.content(context),
10
17
  domElement = document.createTextNode(content);
11
18
 
12
19
  this.setDOMElement(domElement);
@@ -2,18 +2,26 @@
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
4
 
5
- import { domElementsFromChildNodes } from "../../utilities/childNodes";
5
+ import { htmlFromChildNodes, domElementsFromChildNodes } from "../../utilities/childNodes";
6
6
 
7
7
  export default class LineMarkdownNode extends MarkdownNode {
8
+ childNodesAsHTML(indent, context) {
9
+ const childNodes = this.getChildNodes(),
10
+ childNodesHTML = htmlFromChildNodes(childNodes, context);
11
+
12
+ return childNodesHTML;
13
+ }
14
+
8
15
  createChildNodeDOMElements(context) {
9
- const domElement = this.getDOMElement(),
10
- childNodes = this.getChildNodes(),
16
+ const childNodes = this.getChildNodes(),
17
+ domElement = this.getDOMElement(),
11
18
  domElements = domElementsFromChildNodes(childNodes, context),
12
19
  parentDOMElement = domElement, ///
13
- siblingDOMElement = null;
20
+ siblingDOMElement = null,
21
+ childNodeDOMElements = domElements; ///
14
22
 
15
- domElements.forEach((domElement) => {
16
- parentDOMElement.insertBefore(domElement, siblingDOMElement);
23
+ childNodeDOMElements.forEach((childNodeDOMElement) => {
24
+ parentDOMElement.insertBefore(childNodeDOMElement, siblingDOMElement);
17
25
  });
18
26
  }
19
27