highmark-markdown 0.0.278 → 0.0.280

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 (63) hide show
  1. package/example.js +2227 -3002
  2. package/lib/elementMap.js +16 -34
  3. package/lib/example/view.js +2 -2
  4. package/lib/markdown/bnf.js +2 -2
  5. package/lib/markdown/entries.js +11 -23
  6. package/lib/node/markdown/{contents.js → directive/contents.js} +11 -11
  7. package/lib/node/markdown/{embee.js → directive/embee.js} +12 -12
  8. package/lib/node/markdown/{footnotes.js → directive/footnotes.js} +11 -11
  9. package/lib/node/markdown/{tableSeparator.js → directive/ignore.js} +11 -11
  10. package/lib/node/markdown/{include.js → directive/include.js} +11 -11
  11. package/lib/node/markdown/directives.js +2 -2
  12. package/lib/node/markdown/division.js +15 -15
  13. package/lib/node/markdown/error.js +22 -2
  14. package/lib/node/markdown/footnote.js +7 -3
  15. package/lib/node/markdown/orderedListItem.js +37 -3
  16. package/lib/node/markdown/paragraph.js +33 -2
  17. package/lib/node/markdown/stronglyEmphasisedText.js +2 -1
  18. package/lib/node/markdown/tableCell.js +2 -2
  19. package/lib/node/markdown/unorderedListItem.js +33 -2
  20. package/lib/nodeMap.js +7 -13
  21. package/lib/ruleNames.js +23 -53
  22. package/lib/tokenTypes.js +23 -48
  23. package/lib/utilities/childNodes.js +3 -1
  24. package/lib/utilities/index.js +28 -0
  25. package/lib/utilities/query.js +39 -48
  26. package/package.json +1 -1
  27. package/src/elementMap.js +25 -55
  28. package/src/example/view.js +2 -3
  29. package/src/markdown/bnf.js +98 -109
  30. package/src/markdown/entries.js +10 -22
  31. package/src/node/markdown/{contents.js → directive/contents.js} +3 -3
  32. package/src/node/markdown/{embee.js → directive/embee.js} +4 -4
  33. package/src/node/markdown/{footnotes.js → directive/footnotes.js} +3 -3
  34. package/src/node/markdown/directive/ignore.js +7 -0
  35. package/src/node/markdown/{include.js → directive/include.js} +3 -3
  36. package/src/node/markdown/directives.js +1 -2
  37. package/src/node/markdown/division.js +23 -24
  38. package/src/node/markdown/error.js +29 -1
  39. package/src/node/markdown/footnote.js +12 -3
  40. package/src/node/markdown/orderedListItem.js +48 -3
  41. package/src/node/markdown/paragraph.js +37 -0
  42. package/src/node/markdown/stronglyEmphasisedText.js +2 -0
  43. package/src/node/markdown/tableCell.js +1 -1
  44. package/src/node/markdown/unorderedListItem.js +37 -0
  45. package/src/nodeMap.js +15 -33
  46. package/src/ruleNames.js +10 -22
  47. package/src/tokenTypes.js +10 -20
  48. package/src/utilities/childNodes.js +4 -0
  49. package/src/utilities/index.js +13 -0
  50. package/src/utilities/query.js +38 -46
  51. package/lib/node/markdown/bullet.js +0 -120
  52. package/lib/node/markdown/ignore.js +0 -120
  53. package/lib/node/markdown/line.js +0 -137
  54. package/lib/node/markdown/lineBreak.js +0 -134
  55. package/lib/node/markdown/marker.js +0 -130
  56. package/lib/node/markdown/reference.js +0 -130
  57. package/src/node/markdown/bullet.js +0 -7
  58. package/src/node/markdown/ignore.js +0 -7
  59. package/src/node/markdown/line.js +0 -31
  60. package/src/node/markdown/lineBreak.js +0 -17
  61. package/src/node/markdown/marker.js +0 -21
  62. package/src/node/markdown/reference.js +0 -21
  63. package/src/node/markdown/tableSeparator.js +0 -7
@@ -5,126 +5,135 @@ const bnf = `
5
5
  division ::= ( subDivision | endOfLine | error )+ ;
6
6
 
7
7
 
8
- subDivision.. ::= ( verticalSpace | <START_OF_CONTENT> ) ( directives
9
-
10
- | primaryHeading
11
-
12
- | secondaryHeading
13
-
14
- | tertiaryHeading
15
-
16
- | quaternaryHeading
17
-
18
- | lineBreak
19
-
20
- | footnote
21
-
22
- | orderedList
23
-
24
- | unorderedList
25
-
26
- | blockListing
27
-
28
- | table
29
-
30
- | paragraph ) ;
31
-
32
-
33
- verticalSpace. ::= endOfLine+ ;
34
-
8
+ subDivision ::= verticalSpace ( directives
9
+
10
+ | primaryHeading
11
+
12
+ | secondaryHeading
13
+
14
+ | tertiaryHeading
15
+
16
+ | quaternaryHeading
17
+
18
+ | table
19
+
20
+ | footnote
21
+
22
+ | orderedList
23
+
24
+ | unorderedList
25
+
26
+ | blockListing
27
+
28
+ | paragraph ) ;
35
29
 
30
+
36
31
  endOfLine. ::= <END_OF_LINE> ;
37
32
 
38
33
 
39
34
  error. ::= . ;
40
35
 
41
36
 
42
- primaryHeading ::= [single-hash] line ;
43
-
44
-
45
- secondaryHeading ::= [double-hash] line ;
37
+ verticalSpace ::= <END_OF_LINE> <END_OF_LINE>+
38
+
39
+ | <START_OF_CONTENT> <END_OF_LINE>*
40
+
41
+ ;
46
42
 
47
43
 
48
- tertiaryHeading ::= [triple-hash] line ;
44
+ directives ::= ( embedDirective
49
45
 
46
+ | ignoreDirective
50
47
 
51
- quaternaryHeading ::= [quadruple-hash] line ;
48
+ | includeDirective
49
+
50
+ | contentsDirective
51
+
52
+ | footnotesDirective ) ( endOfLine ( embedDirective
53
+
54
+ | ignoreDirective
55
+
56
+ | includeDirective
57
+
58
+ | contentsDirective
59
+
60
+ | footnotesDirective ) )* ;
52
61
 
53
62
 
54
- lineBreak ::= [two-dashes] endOfLine ;
63
+ primaryHeading ::= "#" markedText ;
55
64
 
56
65
 
57
- footnotesList ::= footnoteItem+ ;
66
+ secondaryHeading ::= "##" markedText ;
58
67
 
59
68
 
60
- footnoteItem ::= anchor paragraph ;
69
+ tertiaryHeading ::= "###" markedText ;
70
+
71
+
72
+ quaternaryHeading ::= "####" markedText ;
61
73
 
62
74
 
63
- footnote ::= reference paragraph ;
75
+ table ::= tableHead <END_OF_LINE> [dashes] <END_OF_LINE> tableBody ;
64
76
 
65
77
 
66
- table ::= tableHead tableSeparator tableBody ;
78
+ footnote ::= [reference] paragraph ;
67
79
 
68
80
 
69
- paragraph ::= line+ ;
70
-
81
+ orderedList ::= orderedListItem ( <END_OF_LINE> orderedListItem )* ;
71
82
 
72
- orderedList ::= orderedListItem+ ;
73
83
 
84
+ unorderedList ::= unorderedListItem ( <END_OF_LINE> unorderedListItem )* ;
74
85
 
75
- unorderedList ::= unorderedListItem+ ;
76
86
 
87
+ blockListing ::= blockListingStart <END_OF_LINE> blockText <END_OF_LINE> blockListingEnd ;
77
88
 
78
- blockListing ::= blockListingStart blockText blockListingEnd ;
79
89
 
90
+ paragraph ::= markedText ( <END_OF_LINE> markedText )* ;
91
+
80
92
 
81
- directives ::= ( embed | ignore | include | contents | footnotes )+ ;
93
+ embedDirective ::= "@"<NO_WHITESPACE>"embed" [path] ;
82
94
 
83
95
 
84
- embed ::= "@"<NO_WHITESPACE>"embed" [path] endOfLine ;
96
+ ignoreDirective ::= "@"<NO_WHITESPACE>"ignore" ;
85
97
 
86
98
 
87
- ignore ::= "@"<NO_WHITESPACE>"ignore" ;
99
+ includeDirective ::= "@"<NO_WHITESPACE>"include" [path] ;
88
100
 
89
101
 
90
- include ::= "@"<NO_WHITESPACE>"include" [path] endOfLine ;
102
+ contentsDirective ::= "@"<NO_WHITESPACE>"contents" [number]? ;
91
103
 
92
104
 
93
- contents ::= "@"<NO_WHITESPACE>"contents" [number]? endOfLine ;
105
+ footnotesDirective ::= "@"<NO_WHITESPACE>"footnotes" ;
94
106
 
95
107
 
96
- footnotes ::= "@"<NO_WHITESPACE>"footnotes" endOfLine ;
108
+ footnotesList ::= footnoteItem+ ;
97
109
 
98
110
 
99
- tableHead ::= tableHeadRow ;
111
+ footnoteItem ::= anchor paragraph ;
100
112
 
101
-
102
- tableBody ::= tableBodyRow+ ;
113
+
114
+ tableHead ::= tableHeadRow ;
103
115
 
104
116
 
105
- tableSeparator ::= [many-dashes] endOfLine ;
117
+ tableBody ::= tableBodyRow ;
106
118
 
107
119
 
108
- orderedListItem. ::= marker line ;
120
+ orderedListItem ::= [marker] markedText ( <END_OF_LINE> markedText )* ;
109
121
 
110
122
 
111
- unorderedListItem ::= bullet line ;
123
+ unorderedListItem ::= [bullet] markedText ( <END_OF_LINE> markedText )* ;
112
124
 
113
125
 
114
- blockListingStart ::= [backticks] className? endOfLine ;
126
+ blockListingStart ::= [backticks] className? ;
115
127
 
116
128
 
117
- blockListingEnd ::= [backticks] endOfLine ;
129
+ blockListingEnd ::= [backticks] ;
118
130
 
119
131
 
120
- tableHeadRow ::= [vertical-bar] tableHeadCell+ endOfLine ;
132
+ tableHeadRow ::= [vertical-bar] tableHeadCell+ ;
121
133
 
122
134
 
123
- tableBodyRow ::= [vertical-bar] tableBodyCell+ endOfLine ;
124
-
135
+ tableBodyRow ::= [vertical-bar] tableBodyCell+ ;
125
136
 
126
- blockText. ::= ( plainText | endOfLine )+ ;
127
-
128
137
 
129
138
  tableHeadCell ::= emptyTableCell | tableCell ;
130
139
 
@@ -138,17 +147,14 @@ const bnf = `
138
147
  tableCell. ::= markedText... [vertical-bar] ;
139
148
 
140
149
 
141
- line. ::= markedText endOfLine ;
142
-
143
-
144
150
  markedText ::= ( link
145
151
 
146
- | image
147
-
148
152
  | emailLink
149
153
 
150
154
  | hyperlink
151
155
 
156
+ | image
157
+
152
158
  | inlineListing
153
159
 
154
160
  | stronglyEmphasisedText
@@ -163,9 +169,6 @@ const bnf = `
163
169
  link. ::= "[^" [identifier] "]" ;
164
170
 
165
171
 
166
- image. ::= "![" inlineText... "]"<NO_WHITESPACE>"(" [path] ")" ;
167
-
168
-
169
172
  emailLink. ::= "[" inlineText... "]"<NO_WHITESPACE>"(" [email-address] ")"
170
173
 
171
174
  | [email-address]
@@ -180,53 +183,49 @@ const bnf = `
180
183
  ;
181
184
 
182
185
 
186
+ image. ::= "![" inlineText... "]"<NO_WHITESPACE>"(" [path] ")" ;
187
+
188
+
183
189
  inlineListing ::= [backticked-literal] ;
184
190
 
185
191
 
186
- stronglyEmphasisedText ::= [triple-asterisk] inlineText... [triple-asterisk] ;
192
+ stronglyEmphasisedText ::= "****" inlineText "****" ;
187
193
 
188
194
 
189
- emphasisedText ::= [single-asterisk] inlineText... [single-asterisk] ;
195
+ emphasisedText ::= "**" inlineText "**" ;
190
196
 
191
197
 
192
- strongText ::= [double-asterisk] inlineText... [double-asterisk] ;
198
+ strongText ::= "***" inlineText "***" ;
193
199
 
194
200
 
201
+ blockText. ::= ( plainText
202
+
203
+ | [url]
204
+
205
+ | [dashes]
206
+
207
+ | [vertical-bar]
208
+
209
+ | [email-address] )+ ( <END_OF_LINE> ( plainText
210
+
211
+ | [url]
212
+
213
+ | [dashes]
214
+
215
+ | [vertical-bar]
216
+
217
+ | [email-address] )+ )* ;
218
+
219
+
195
220
  inlineText ::= plainText+ ;
196
221
 
197
222
 
198
223
  plainText ::= [escaped]
199
224
 
200
- | [triple-asterisk]
201
-
202
- | [double-asterisk]
203
-
204
- | [single-asterisk]
205
-
206
- | [quadruple-hash]
207
-
208
- | [triple-hash]
209
-
210
- | [double-hash]
211
-
212
- | [single-hash]
213
-
214
- | [single-dash]
215
-
216
- | [vertical-bar]
217
-
218
- | [many-dashes]
219
-
220
- | [two-dashes]
221
-
222
225
  | [number]
223
226
 
224
227
  | [path]
225
228
 
226
- | [domain]
227
-
228
- | [scheme]
229
-
230
229
  | [identifier]
231
230
 
232
231
  | [word]
@@ -238,21 +237,11 @@ const bnf = `
238
237
  ;
239
238
 
240
239
 
241
- reference. ::= "[^" [identifier] "]:" ;
242
-
243
-
244
240
  anchor. ::= [identifier] ;
245
241
 
246
242
 
247
- marker. ::= [number]<NO_WHITESPACE>"." ;
248
-
249
-
250
- bullet. ::= [single-dash] | [single-asterisk] ;
251
-
252
-
253
243
  className ::= <NO_WHITESPACE>[identifier] ;
254
244
 
255
245
  `;
256
246
 
257
247
  export default bnf;
258
-
@@ -5,47 +5,32 @@ const entries = [
5
5
  "escaped": "^\\\\[^\\s]"
6
6
  },
7
7
  {
8
- "triple-asterisk": "^\\*\\*\\*"
8
+ "asterisks": "^\\*{2,4}"
9
9
  },
10
10
  {
11
- "double-asterisk": "^\\*\\*"
11
+ "hashes": "^#{1,4}"
12
12
  },
13
13
  {
14
- "single-asterisk": "^\\*"
14
+ "dashes": "^-{3,}"
15
15
  },
16
16
  {
17
- "quadruple-hash": "^####"
17
+ "bullet": "^(?:-|\\*)"
18
18
  },
19
19
  {
20
- "triple-hash": "^###"
20
+ "marker": "^[1-9][0-9]*\\."
21
21
  },
22
22
  {
23
- "double-hash": "^##"
24
- },
25
- {
26
- "single-hash": "^#"
27
- },
28
- {
29
- "many-dashes": "^-{3,}"
30
- },
31
- {
32
- "two-dashes": "^--"
23
+ "number": "^[1-9][0-9]*"
33
24
  },
34
25
  {
35
- "single-dash": "^-"
26
+ "backticks": "^```"
36
27
  },
37
28
  {
38
29
  "vertical-bar": "^\\|"
39
30
  },
40
- {
41
- "backticks": "^```"
42
- },
43
31
  {
44
32
  "backticked-literal": "^`(?:\\\\[^\\s]|[^`\\\\\\r\\n])*`"
45
33
  },
46
- {
47
- "number": "^[1-9][0-9]*"
48
- },
49
34
  {
50
35
  "email-address": "^[a-z0-9\\-_]+(?:\\.[a-z0-9\\-_]+)*@[a-z0-9\\-_]+(?:\\.[a-z0-9\\-_]+)+"
51
36
  },
@@ -55,6 +40,9 @@ const entries = [
55
40
  {
56
41
  "path": "^[a-z0-9\\-_]+(?:\\/[a-z0-9\\-_]+)*\\.[a-z0-9\\-_]+"
57
42
  },
43
+ {
44
+ "reference": "\\[\\^[a-z]+(?:-[a-z]+)*\\]:"
45
+ },
58
46
  {
59
47
  "identifier": "[a-z]+(?:-[a-z]+)*"
60
48
  },
@@ -2,11 +2,11 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import MarkdownNode from "../../node/markdown";
5
+ import MarkdownNode from "../../../node/markdown";
6
6
 
7
7
  const { fourth } = arrayUtilities;
8
8
 
9
- export default class ContentsMarkdownNode extends MarkdownNode {
9
+ export default class ContentsDirectiveMarkdownNode extends MarkdownNode {
10
10
  asHTML(indent, context) {
11
11
  const html = null;
12
12
 
@@ -45,5 +45,5 @@ export default class ContentsMarkdownNode extends MarkdownNode {
45
45
  return minimumPosition;
46
46
  }
47
47
 
48
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsMarkdownNode, ruleName, childNodes, opacity); }
48
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsDirectiveMarkdownNode, ruleName, childNodes, opacity); }
49
49
  }
@@ -2,12 +2,12 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import MarkdownNode from "../../node/markdown";
6
- import ReplacementNodeAndTokens from "../../replacementNodeAndTokens";
5
+ import MarkdownNode from "../../../node/markdown";
6
+ import ReplacementNodeAndTokens from "../../../replacementNodeAndTokens";
7
7
 
8
8
  const { fourth } = arrayUtilities;
9
9
 
10
- export default class EmbedMarkdownNode extends MarkdownNode {
10
+ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
11
11
  replacementNodeAndTokens(context) {
12
12
  let replacementNodeAndTokens = null;
13
13
 
@@ -46,5 +46,5 @@ export default class EmbedMarkdownNode extends MarkdownNode {
46
46
  return filePath;
47
47
  }
48
48
 
49
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedMarkdownNode, ruleName, childNodes, opacity); }
49
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
50
50
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../../node/markdown";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
- export default class FootnotesMarkdownNode extends MarkdownNode {
5
+ export default class FootnotesDirectiveMarkdownNode extends MarkdownNode {
6
6
  asHTML(indent, context) {
7
7
  const html = null;
8
8
 
@@ -15,5 +15,5 @@ export default class FootnotesMarkdownNode extends MarkdownNode {
15
15
  return domElement;
16
16
  }
17
17
 
18
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(FootnotesMarkdownNode, ruleName, childNodes, opacity); }
18
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(FootnotesDirectiveMarkdownNode, ruleName, childNodes, opacity); }
19
19
  }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import MarkdownNode from "../../../node/markdown";
4
+
5
+ export default class IgnoreDirectiveMarkdownNode extends MarkdownNode {
6
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IgnoreDirectiveMarkdownNode, ruleName, childNodes, opacity); }
7
+ }
@@ -2,11 +2,11 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import MarkdownNode from "../../node/markdown";
5
+ import MarkdownNode from "../../../node/markdown";
6
6
 
7
7
  const { push, fourth } = arrayUtilities;
8
8
 
9
- export default class IncludeMarkdownNode extends MarkdownNode {
9
+ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
10
10
  resolveIncludes(context) {
11
11
  let html = null;
12
12
 
@@ -56,5 +56,5 @@ export default class IncludeMarkdownNode extends MarkdownNode {
56
56
  return filePath;
57
57
  }
58
58
 
59
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeMarkdownNode, ruleName, childNodes, opacity); }
59
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
60
60
  }
@@ -4,8 +4,7 @@ import MarkdownNode from "../../node/markdown";
4
4
 
5
5
  export default class DirectivesMarkdownNode extends MarkdownNode {
6
6
  asHTML(indent, context) {
7
- const childNodesHTML = this.childNodesAsHTML(indent, context),
8
- html = childNodesHTML; ///
7
+ const html = null;
9
8
 
10
9
  return html;
11
10
  }
@@ -6,14 +6,14 @@ import MarkdownNode from "../../node/markdown";
6
6
  import ContentsListMarkdownNode from "../../node/markdown/contentsList";
7
7
  import FootnotesListMarkdownNode from "../../node/markdown/footnotesList";
8
8
 
9
+ import { EMPTY_STRING } from "../../constants";
9
10
  import { renumberLinkMarkdownNodes } from "../../utilities/footnotes";
10
11
  import { replaceNode, replaceNodes, replaceTokens } from "../../utilities/replace";
11
- import { embedMarkdownNodesFromNode,
12
- ignoreMarkdownNodeFromNode,
13
- headingMarkdownNodesFromNode,
14
- contentsMarkdownNodeFromNode,
15
- footnotesMarkdownNodesFromNode } from "../../utilities/query";
16
- import {EMPTY_STRING} from "../../constants";
12
+ import { headingMarkdownNodesFromNode,
13
+ embedDirectiveMarkdownNodesFromNode,
14
+ ignoreDirectiveMarkdownNodeFromNode,
15
+ contentsDirectiveMarkdownNodeFromNode,
16
+ footnotesDirectiveMarkdownNodeFromNode } from "../../utilities/query";
17
17
 
18
18
  const { filter } = arrayUtilities;
19
19
 
@@ -40,8 +40,8 @@ export default class DivisionMarkdownNode extends MarkdownNode {
40
40
 
41
41
  isIgnored() {
42
42
  const node = this,
43
- ignoreMarkdownNode = ignoreMarkdownNodeFromNode(node),
44
- ignored = (ignoreMarkdownNode !== null);
43
+ ignoreDirectiveMarkdownNode = ignoreDirectiveMarkdownNodeFromNode(node),
44
+ ignored = (ignoreDirectiveMarkdownNode !== null);
45
45
 
46
46
  return ignored;
47
47
  }
@@ -78,11 +78,11 @@ export default class DivisionMarkdownNode extends MarkdownNode {
78
78
  let contentsCreated = false;
79
79
 
80
80
  const node = this, ///
81
- contentsMarkdownNode = contentsMarkdownNodeFromNode(node);
81
+ contentsDirectiveMarkdownNode = contentsDirectiveMarkdownNodeFromNode(node);
82
82
 
83
- if (contentsMarkdownNode !== null) {
83
+ if (contentsDirectiveMarkdownNode !== null) {
84
84
  const divisionMarkdownNode = this, ///
85
- headingMarkdownNodes = headingMarkdownNodesFromDivisionMarkdownNodeAndContentsMarkdownNode(divisionMarkdownNode, contentsMarkdownNode, context),
85
+ headingMarkdownNodes = headingMarkdownNodesFromDivisionMarkdownNodeAndContentsDirectiveMarkdownNode(divisionMarkdownNode, contentsDirectiveMarkdownNode, context),
86
86
  headingMarkdownNodesLength = headingMarkdownNodes.length;
87
87
 
88
88
  if (headingMarkdownNodesLength === 0) {
@@ -92,9 +92,9 @@ export default class DivisionMarkdownNode extends MarkdownNode {
92
92
  const { tokens } = context,
93
93
  contentsListMarkdownNode = ContentsListMarkdownNode.fromHeadingMarkdownNodes(headingMarkdownNodes, context),
94
94
  contentsListMarkdownNodeTokens = contentsListMarkdownNode.getTokens(),
95
- childNode = contentsMarkdownNode, ///
95
+ childNode = contentsDirectiveMarkdownNode, ///
96
96
  parentNode = this.findParentNode(childNode),
97
- replacedNode = contentsMarkdownNode, ///
97
+ replacedNode = contentsDirectiveMarkdownNode, ///
98
98
  replacementNode = contentsListMarkdownNode, ///
99
99
  replacementTokens = contentsListMarkdownNodeTokens; ///
100
100
 
@@ -110,10 +110,9 @@ export default class DivisionMarkdownNode extends MarkdownNode {
110
110
 
111
111
  createFootnotes(context) {
112
112
  const node = this, ///
113
- footnotesMarkdownNodes = footnotesMarkdownNodesFromNode(node),
114
- footnotesMarkdownNodesLength = footnotesMarkdownNodes.length;
113
+ footnotesDirectiveMarkdownNode = footnotesDirectiveMarkdownNodeFromNode(node);
115
114
 
116
- if (footnotesMarkdownNodesLength > 0) {
115
+ if (footnotesDirectiveMarkdownNode !== null) {
117
116
  const divisionMarkdownNode = this, ///
118
117
  footnotesListMarkdownNode = FootnotesListMarkdownNode.fromDivisionMarkdownNode(divisionMarkdownNode, context);
119
118
 
@@ -129,10 +128,10 @@ export default class DivisionMarkdownNode extends MarkdownNode {
129
128
 
130
129
  resolveEmbeddings(context) {
131
130
  const node = this, ///
132
- embedMarkdownNodes = embedMarkdownNodesFromNode(node);
131
+ embedDirectiveMarkdownNodes = embedDirectiveMarkdownNodesFromNode(node);
133
132
 
134
- embedMarkdownNodes.map((embedMarkdownNode) => {
135
- const replacementNodeAndTokens = embedMarkdownNode.replacementNodeAndTokens(context);
133
+ embedDirectiveMarkdownNodes.map((embedDirectiveMarkdownNode) => {
134
+ const replacementNodeAndTokens = embedDirectiveMarkdownNode.replacementNodeAndTokens(context);
136
135
 
137
136
  if (replacementNodeAndTokens !== null) {
138
137
  let tokens;
@@ -145,9 +144,9 @@ export default class DivisionMarkdownNode extends MarkdownNode {
145
144
 
146
145
  ({ tokens } = context);
147
146
 
148
- const childNode = embedMarkdownNode, ///
147
+ const childNode = embedDirectiveMarkdownNode, ///
149
148
  parentNode = this.findParentNode(childNode),
150
- replacedNode = embedMarkdownNode; ///
149
+ replacedNode = embedDirectiveMarkdownNode; ///
151
150
 
152
151
  replaceNodes(replacementNodes, replacedNode, parentNode);
153
152
 
@@ -197,10 +196,10 @@ ${childNodesHTML}${indent}${closingTag}
197
196
  }
198
197
  }
199
198
 
200
- function headingMarkdownNodesFromDivisionMarkdownNodeAndContentsMarkdownNode(divisionMarkdownNode, contentsMarkdownNode, context) {
199
+ function headingMarkdownNodesFromDivisionMarkdownNodeAndContentsDirectiveMarkdownNode(divisionMarkdownNode, contentsDirectiveMarkdownNode, context) {
201
200
  const headingMarkdownNodes = [],
202
- minimumPosition = contentsMarkdownNode.minimumPosition(context),
203
- maximumLevel = contentsMarkdownNode.maximumLevel(context),
201
+ minimumPosition = contentsDirectiveMarkdownNode.minimumPosition(context),
202
+ maximumLevel = contentsDirectiveMarkdownNode.maximumLevel(context),
204
203
  node = divisionMarkdownNode; ///
205
204
 
206
205
  headingMarkdownNodesFromNode(node, headingMarkdownNodes);
@@ -4,9 +4,37 @@ import MarkdownNode from "../../node/markdown";
4
4
  import contentMixins from "../../mixins/content";
5
5
 
6
6
  class ErrorMarkdownNode extends MarkdownNode {
7
+ asHTML(indent, context) {
8
+ indent = this.adjustIndent(indent);
9
+
10
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
11
+ startingTag = this.startingTag(context),
12
+ closingTag = this.closingTag(context),
13
+ html = `${indent}${startingTag}${childNodesHTML}${closingTag}
14
+ `;
15
+
16
+ return html;
17
+ }
18
+
19
+ createDOMElement(context) {
20
+ const tagName = this.tagName(context),
21
+ className = this.className(context),
22
+ domElement = document.createElement(tagName);
23
+
24
+ Object.assign(domElement, {
25
+ className
26
+ });
27
+
28
+ this.setDOMElement(domElement);
29
+
30
+ this.createChildNodeDOMElements(context);
31
+
32
+ return domElement;
33
+ }
34
+
7
35
  childNodesAsHTML(indent, context) {
8
36
  const content = this.content(context),
9
- childNodesHTML = content; ///
37
+ childNodesHTML = content;
10
38
 
11
39
  return childNodesHTML;
12
40
  }