highmark-markdown 0.0.287 → 0.0.289

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.
@@ -1,19 +1,55 @@
1
1
  "use strict";
2
2
 
3
+ import { arrayUtilities } from "necessary";
4
+
3
5
  import MarkdownNode from "../../node/markdown";
4
6
 
7
+ const { push } = arrayUtilities;
8
+
5
9
  export default class DirectivesMarkdownNode extends MarkdownNode {
10
+ constructor(ruleName, childNodes, opacity, precedence, domElement, domElements) {
11
+ super(ruleName, childNodes, opacity, precedence, domElement);
12
+
13
+ this.domElements = domElements;
14
+ }
15
+
16
+ getDOMElements() {
17
+ return this.domElements;
18
+ }
19
+
6
20
  asHTML(indent, context) {
7
- const html = null;
21
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
22
+ html = childNodesHTML; ///
8
23
 
9
24
  return html;
10
25
  }
11
26
 
12
27
  createDOMElement(context) {
13
- const domElement = null;
28
+ const domElement = null,
29
+ childNodes = this.getChildNodes();
30
+
31
+ childNodes.forEach((childNode) => {
32
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
33
+
34
+ if (childNodeNonTerminalNode) {
35
+ const nonTerminalNode = childNode, ///
36
+ markdownNode = nonTerminalNode; ///
37
+
38
+ markdownNode.createDOMElement(context);
39
+
40
+ const markdownNodeDOMElements = markdownNode.getDOMElements();
41
+
42
+ push(this.domElements, markdownNodeDOMElements);
43
+ }
44
+ });
14
45
 
15
46
  return domElement;
16
47
  }
17
48
 
18
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(DirectivesMarkdownNode, ruleName, childNodes, opacity); }
49
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
50
+ const domElements = [],
51
+ directivesMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(DirectivesMarkdownNode, ruleName, childNodes, opacity, domElements);
52
+
53
+ return directivesMarkdownNode;
54
+ }
19
55
  }
@@ -7,13 +7,14 @@ import MarkdownNode from "../../node/markdown";
7
7
  const { second } = arrayUtilities;
8
8
 
9
9
  export default class SubDivisionMarkdownNode extends MarkdownNode {
10
- getDOMElement() {
11
- const childNodes = this.getChildNodes(),
12
- secondChildNode = second(childNodes),
13
- secondChildNodeDOMElement = secondChildNode.getDOMElement(),
14
- domElement = secondChildNodeDOMElement; ///
10
+ constructor(ruleName, childNodes, opacity, precedence, domElement, domElements) {
11
+ super(ruleName, childNodes, opacity, precedence, domElement);
15
12
 
16
- return domElement;
13
+ this.domElements = domElements;
14
+ }
15
+
16
+ getDOMElements() {
17
+ return this.domElements;
17
18
  }
18
19
 
19
20
  asHTML(indent, context) {
@@ -26,13 +27,21 @@ export default class SubDivisionMarkdownNode extends MarkdownNode {
26
27
  }
27
28
 
28
29
  createDOMElement(context) {
29
- const childNodes = this.getChildNodes(),
30
- secondChildNode = second(childNodes),
31
- secondChildNodeDOMElement = secondChildNode.createDOMElement(context),
32
- domElement = secondChildNodeDOMElement; ///
30
+ const domElement = null,
31
+ childNodes = this.getChildNodes(),
32
+ secondChildNode = second(childNodes);
33
+
34
+ secondChildNode.createDOMElement(context);
35
+
36
+ this.domElements = secondChildNode.getDOMElements();
33
37
 
34
38
  return domElement;
35
39
  }
36
40
 
37
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(SubDivisionMarkdownNode, ruleName, childNodes, opacity); }
41
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
42
+ const domElements = [],
43
+ subDivisionMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(SubDivisionMarkdownNode, ruleName, childNodes, opacity, domElements);
44
+
45
+ return subDivisionMarkdownNode;
46
+ }
38
47
  }
@@ -23,6 +23,14 @@ class MarkdownNode extends NonTerminalNode {
23
23
  this.domElement = domElement;
24
24
  }
25
25
 
26
+ getDOMElements() {
27
+ const domElements = (this.domElement === null) ?
28
+ [] :
29
+ [this.domElement];
30
+
31
+ return domElements;
32
+ }
33
+
26
34
  tagName(context) {
27
35
  const { tagName } = elementMap[this.ruleName];
28
36
 
@@ -217,12 +225,15 @@ ${childNodesHTML}${indent}${closingTag}
217
225
 
218
226
  if (childNodeNonTerminalNode) {
219
227
  const nonTerminalNode = childNode, ///
220
- markdownNode = nonTerminalNode, ///
221
- domElement = markdownNode.createDOMElement(context);
228
+ markdownNode = nonTerminalNode; ///
222
229
 
223
- if (domElement !== null) {
230
+ markdownNode.createDOMElement(context);
231
+
232
+ const domElements = markdownNode.getDOMElements();
233
+
234
+ domElements.forEach((domElement) => {
224
235
  this.addDOMElement(domElement);
225
- }
236
+ });
226
237
  }
227
238
  });
228
239
  }
@@ -7,7 +7,7 @@ import PlainTextMarkdownNode from "../node/markdown/plainText";
7
7
  import { EMPTY_STRING } from "../constants";
8
8
  import { contentFromMarkdownNodes } from "./content";
9
9
 
10
- const { clear } = arrayUtilities;
10
+ const { push, clear } = arrayUtilities;
11
11
 
12
12
  export function htmlFromChildNodes(childNodes, context, leftTrimmed) {
13
13
  let html;
@@ -141,11 +141,11 @@ export function domElementsFromChildNodes(childNodes, context, leftTrimmed) {
141
141
  domElements.push(domElement);
142
142
  }
143
143
 
144
- const domElement = markdownNode.createDOMElement(context);
144
+ markdownNode.createDOMElement(context);
145
145
 
146
- if (domElement !== null) {
147
- domElements.push(domElement);
148
- }
146
+ const markdownNodeDOMElements = markdownNode.getDOMElements();
147
+
148
+ push(domElements, markdownNodeDOMElements);
149
149
  }
150
150
  }
151
151