highmark-markdown 1.0.169 → 1.0.170

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 (92) hide show
  1. package/example.js +6921 -3362
  2. package/lib/classFromOuterNode.js +30 -0
  3. package/lib/constants.js +5 -1
  4. package/lib/example/constants.js +5 -1
  5. package/lib/example/view/button/page.js +2 -2
  6. package/lib/example/view/div/container/markdown.js +33 -4
  7. package/lib/example/view/div/container/markdownStyle.js +31 -2
  8. package/lib/example/view/div/container/preview.js +3 -9
  9. package/lib/example/view/div/container.js +2 -2
  10. package/lib/example/view/div/html.js +2 -2
  11. package/lib/example/view/div/pageButtons.js +2 -2
  12. package/lib/example/view/div/preview.js +1 -14
  13. package/lib/example/view/textarea/css.js +2 -2
  14. package/lib/example/view/textarea/markdown.js +2 -2
  15. package/lib/example/view/textarea/markdownStyle.js +2 -2
  16. package/lib/example/view/textarea/parseTree/markdown/inner.js +179 -0
  17. package/lib/example/view/textarea/parseTree/markdown/outer.js +148 -0
  18. package/lib/example/view/textarea/parseTree/markdown.js +1 -27
  19. package/lib/example/view/textarea/parseTree/markdownStyle.js +23 -2
  20. package/lib/example/view/textarea/parseTree.js +2 -2
  21. package/lib/example/view/textarea/plainText.js +2 -2
  22. package/lib/example/view/textarea.js +2 -2
  23. package/lib/example/view.js +20 -10
  24. package/lib/node/html/anchor.js +154 -0
  25. package/lib/node/html/blockLine.js +134 -0
  26. package/lib/node/html/blockListing.js +127 -0
  27. package/lib/node/html/blockListingEnd.js +120 -0
  28. package/lib/node/html/blockListingStart.js +120 -0
  29. package/lib/node/html/className.js +120 -0
  30. package/lib/node/html/comma.js +127 -0
  31. package/lib/node/html/contentsLink.js +136 -0
  32. package/lib/node/html/directive/pageNumber.js +178 -0
  33. package/lib/node/html/item/ordered.js +135 -0
  34. package/lib/node/html/topmost.js +123 -0
  35. package/lib/node/html.js +281 -0
  36. package/lib/node/markdown/anchor.js +1 -34
  37. package/lib/node/markdown/blockLine.js +1 -15
  38. package/lib/node/markdown/blockListing.js +1 -8
  39. package/lib/node/markdown/comma.js +1 -8
  40. package/lib/node/markdown/contentsLink.js +1 -17
  41. package/lib/node/markdown/directive/pageNumber.js +1 -16
  42. package/lib/node/markdown/item/ordered.js +1 -16
  43. package/lib/node/markdown.js +1 -66
  44. package/lib/queries.js +60 -0
  45. package/lib/ruleNameToClassMap.js +44 -0
  46. package/lib/utilities/query.js +12 -1
  47. package/package.json +4 -4
  48. package/src/classFromOuterNode.js +20 -0
  49. package/src/constants.js +1 -0
  50. package/src/example/constants.js +1 -0
  51. package/src/example/view/button/page.js +1 -1
  52. package/src/example/view/div/container/markdown.js +23 -4
  53. package/src/example/view/div/container/markdownStyle.js +21 -2
  54. package/src/example/view/div/container/preview.js +1 -9
  55. package/src/example/view/div/container.js +2 -0
  56. package/src/example/view/div/html.js +1 -1
  57. package/src/example/view/div/pageButtons.js +2 -2
  58. package/src/example/view/div/preview.js +0 -17
  59. package/src/example/view/textarea/css.js +1 -1
  60. package/src/example/view/textarea/markdown.js +2 -2
  61. package/src/example/view/textarea/markdownStyle.js +2 -2
  62. package/src/example/view/textarea/parseTree/markdown/inner.js +36 -0
  63. package/src/example/view/textarea/parseTree/markdown/outer.js +27 -0
  64. package/src/example/view/textarea/parseTree/markdown.js +1 -11
  65. package/src/example/view/textarea/parseTree/markdownStyle.js +10 -2
  66. package/src/example/view/textarea/parseTree.js +0 -2
  67. package/src/example/view/textarea/plainText.js +2 -2
  68. package/src/example/view/textarea.js +1 -1
  69. package/src/example/view.js +38 -19
  70. package/src/node/html/anchor.js +53 -0
  71. package/src/node/html/blockLine.js +27 -0
  72. package/src/node/html/blockListing.js +20 -0
  73. package/src/node/html/blockListingEnd.js +11 -0
  74. package/src/node/html/blockListingStart.js +11 -0
  75. package/src/node/html/className.js +11 -0
  76. package/src/node/html/comma.js +18 -0
  77. package/src/node/html/contentsLink.js +28 -0
  78. package/src/node/html/directive/pageNumber.js +55 -0
  79. package/src/node/html/item/ordered.js +26 -0
  80. package/src/node/html/topmost.js +20 -0
  81. package/src/node/html.js +183 -0
  82. package/src/node/markdown/anchor.js +0 -40
  83. package/src/node/markdown/blockLine.js +0 -16
  84. package/src/node/markdown/blockListing.js +0 -9
  85. package/src/node/markdown/comma.js +0 -7
  86. package/src/node/markdown/contentsLink.js +0 -15
  87. package/src/node/markdown/directive/pageNumber.js +0 -19
  88. package/src/node/markdown/item/ordered.js +0 -15
  89. package/src/node/markdown.js +0 -100
  90. package/src/queries.js +94 -0
  91. package/src/ruleNameToClassMap.js +38 -0
  92. package/src/utilities/query.js +12 -0
@@ -24,9 +24,9 @@ class HTMLDiv extends Element {
24
24
 
25
25
  export default withStyle(HTMLDiv)`
26
26
 
27
+ height: 100%;
27
28
  border: 1px solid darkgrey;
28
29
  overflow: scroll;
29
30
  position: relative;
30
- min-height: 48rem;
31
31
 
32
32
  `;
@@ -90,8 +90,8 @@ class PageButtonsDiv extends Element {
90
90
 
91
91
  export default withStyle(PageButtonsDiv)`
92
92
 
93
- top: 1rem;
94
- right: 1rem;
93
+ top: 7rem;
94
+ right: 3rem;
95
95
  z-index: 1;
96
96
  position: absolute;
97
97
 
@@ -4,8 +4,6 @@ import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import { Element } from "easy";
6
6
 
7
- import PageButtonsDiv from "../div/pageButtons";
8
-
9
7
  class PreviewDiv extends Element {
10
8
  getParentDOMElement() {
11
9
  const domElement = this.getDOMElement(),
@@ -61,17 +59,6 @@ class PreviewDiv extends Element {
61
59
  });
62
60
  }
63
61
 
64
- childElements() {
65
- const { onCustomPageUpdate } = this.properties,
66
- pageUpdateCustomHandler = onCustomPageUpdate; ///
67
-
68
- return (
69
-
70
- <PageButtonsDiv onCustomPageUpdate={pageUpdateCustomHandler} />
71
-
72
- );
73
- }
74
-
75
62
  parentContext() {
76
63
  const context = this.getContext(),
77
64
  clearPreviewDiv = this.clear.bind(this), ///
@@ -90,10 +77,6 @@ class PreviewDiv extends Element {
90
77
 
91
78
  static tagName = "div";
92
79
 
93
- static ignoredProperties = [
94
- "onCustomPageUpdate"
95
- ];
96
-
97
80
  static defaultProperties = {
98
81
  className: "preview"
99
82
  };
@@ -28,6 +28,6 @@ class CSSTextarea extends Textarea {
28
28
 
29
29
  export default withStyle(CSSTextarea)`
30
30
 
31
- height: 48rem;
31
+ height: 100%;
32
32
 
33
33
  `;
@@ -36,7 +36,7 @@ class MarkdownTextarea extends Textarea {
36
36
 
37
37
  export default withStyle(MarkdownTextarea)`
38
38
 
39
- width: 100%;
40
- height: 24rem;
39
+ resize: vertical;
40
+ min-height: 12rem;
41
41
 
42
42
  `;
@@ -36,7 +36,7 @@ class MarkdownStyleTextarea extends Textarea {
36
36
 
37
37
  export default withStyle(MarkdownStyleTextarea)`
38
38
 
39
- width: 100%;
40
- height: 24rem;
39
+ resize: vertical;
40
+ min-height: 12rem;
41
41
 
42
42
  `;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style"; ///
4
+
5
+ import MarkdownParseTreeTextarea from "../../../textarea/parseTree/markdown";
6
+
7
+ class InnerMarkdownParseTreeTextarea extends MarkdownParseTreeTextarea {
8
+ update(parseTree) {
9
+ parseTree.shiftLine();
10
+ parseTree.shiftLine();
11
+
12
+ super.update(parseTree);
13
+
14
+ }
15
+
16
+ parentContext() {
17
+ const clearInnerMarkdownParseTreeTextarea = this.clear.bind(this), ///
18
+ updateInnerMarkdownParseTreeTextarea = this.update.bind(this); ///
19
+
20
+ return ({
21
+ clearInnerMarkdownParseTreeTextarea,
22
+ updateInnerMarkdownParseTreeTextarea
23
+ });
24
+ }
25
+
26
+ static defaultProperties = {
27
+ className: "outer"
28
+ };
29
+ }
30
+
31
+ export default withStyle(InnerMarkdownParseTreeTextarea)`
32
+
33
+ margin-top: 1rem;
34
+ height: 32rem;
35
+
36
+ `;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style"; ///
4
+
5
+ import MarkdownParseTreeTextarea from "../../../textarea/parseTree/markdown";
6
+
7
+ class OuterMarkdownParseTreeTextarea extends MarkdownParseTreeTextarea {
8
+ parentContext() {
9
+ const clearOuterMarkdownParseTreeTextarea = this.clear.bind(this), ///
10
+ updateOuterMarkdownParseTreeTextarea = this.update.bind(this); ///
11
+
12
+ return ({
13
+ clearOuterMarkdownParseTreeTextarea,
14
+ updateOuterMarkdownParseTreeTextarea
15
+ });
16
+ }
17
+
18
+ static defaultProperties = {
19
+ className: "outer"
20
+ };
21
+ }
22
+
23
+ export default withStyle(OuterMarkdownParseTreeTextarea)`
24
+
25
+ flex: 1;
26
+
27
+ `;
@@ -3,17 +3,7 @@
3
3
  import ParseTreeTextarea from "../../textarea/parseTree";
4
4
 
5
5
  export default class MarkdownParseTreeTextarea extends ParseTreeTextarea {
6
- parentContext() {
7
- const clearMarkdownParseTreeTextarea = this.clear.bind(this), ///
8
- updateMarkdownParseTreeTextarea = this.update.bind(this); ///
9
-
10
- return ({
11
- clearMarkdownParseTreeTextarea,
12
- updateMarkdownParseTreeTextarea
13
- });
14
- }
15
-
16
6
  static defaultProperties = {
17
7
  className: "markdown"
18
8
  };
19
- };
9
+ }
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ import withStyle from "easy-with-style"; ///
4
+
3
5
  import ParseTreeTextarea from "../../textarea/parseTree";
4
6
 
5
- export default class MarkdownStyleParseTreeTextarea extends ParseTreeTextarea {
7
+ class MarkdownStyleParseTreeTextarea extends ParseTreeTextarea {
6
8
  parentContext() {
7
9
  const clearMarkdownStyleParseTreeTextarea = this.clear.bind(this), ///
8
10
  updateMarkdownStyleParseTreeTextarea = this.update.bind(this); ///
@@ -16,4 +18,10 @@ export default class MarkdownStyleParseTreeTextarea extends ParseTreeTextarea {
16
18
  static defaultProperties = {
17
19
  className: "markdown-style"
18
20
  };
19
- };
21
+ }
22
+
23
+ export default withStyle(MarkdownStyleParseTreeTextarea)`
24
+
25
+ flex: 1;
26
+
27
+ `;
@@ -37,8 +37,6 @@ class ParseTreeTextarea extends Textarea {
37
37
 
38
38
  export default withStyle(ParseTreeTextarea)`
39
39
 
40
- width: 100%;
41
40
  height: 48rem;
42
- margin-top: 1rem;
43
41
 
44
42
  `;
@@ -41,6 +41,6 @@ class PlainTextTextarea extends Textarea {
41
41
 
42
42
  export default withStyle(PlainTextTextarea)`
43
43
 
44
- height: 48rem;
44
+ height: 100%;
45
45
 
46
- `;
46
+ `;
@@ -8,7 +8,7 @@ export default withStyle(Textarea)`
8
8
 
9
9
  width: 100%;
10
10
  border: 1px solid darkgrey;
11
- resize: vertical;
11
+ resize: none;
12
12
  padding: 0.25rem;
13
13
  font-size: 1.2rem;
14
14
  min-height: 24rem;
@@ -3,25 +3,33 @@
3
3
  import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import { Element } from "easy";
6
+ import { nodeUtilities } from "occam-dom";
6
7
  import { RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv } from "easy-layout";
7
8
  import { MarkdownLexer, MarkdownParser, MarkdownStyleLexer, MarkdownStyleParser } from "../index";
8
9
 
10
+ import queries from "../queries";
9
11
  import importer from "./importer";
10
12
  import indexOptions from "./indexOptions";
13
+ import PageButtonsDiv from "./view/div/pageButtons";
11
14
  import LeftSizeableDiv from "./view/div/sizeable/left";
12
15
  import CSSContainerDiv from "./view/div/container/css";
13
16
  import HTMLContainerDiv from "./view/div/container/html";
14
17
  import LeftTabButtonsDiv from "./view/div/tabButtons/left";
15
18
  import RightTabButtonsDiv from "./view/div/tabButtons/right";
19
+ import ClassFromOuterNode from "../classFromOuterNode";
16
20
  import PreviewContainerDiv from "./view/div/container/preview";
17
21
  import MarkdownContainerDiv from "./view/div/container/markdown";
18
22
  import PlainTextContainerDiv from "./view/div/container/plainText";
19
23
  import MarkdownStyleContainerDiv from "./view/div/container/markdownStyle";
24
+ import InnerMarkdownParseTreeTextarea from "./view/textarea/parseTree/markdown/inner";
20
25
 
21
26
  import { defaultContent } from "./importer";
27
+ import { nodesFromNodeAndQueries } from "../utilities/query";
22
28
  import { LINES_PER_PAGE, CONTENTS_DEPTH, CHARACTERS_PER_LINE } from "./constants";
23
29
  import { postprocess, divisionMarkdownNodesFromMarkdownNodes } from "../utilities/processing";
24
30
 
31
+ const { topmostNodeFromOuterNodes } = nodeUtilities;
32
+
25
33
  const markdownLexer = MarkdownLexer.fromNothing(),
26
34
  markdownParser = MarkdownParser.fromNothing(),
27
35
  markdownStyleLexer = MarkdownStyleLexer.fromNothing(),
@@ -69,7 +77,10 @@ class View extends Element {
69
77
 
70
78
  clearPage() {
71
79
  this.clearXMP();
80
+
72
81
  this.clearPreviewDiv();
82
+
83
+ this.clearInnerMarkdownParseTreeTextarea();
73
84
  }
74
85
 
75
86
  updatePage(index) {
@@ -79,9 +90,15 @@ class View extends Element {
79
90
  context = {
80
91
  tokens
81
92
  },
82
- length = null,
83
- html = divisionMarkdownNode.asHTML(context),
84
- plainText = divisionMarkdownNode.asPlainText(context);
93
+ length = null;
94
+
95
+ const node = divisionMarkdownNode, ///
96
+ nodes = nodesFromNodeAndQueries(node, queries),
97
+ topmostHTMLNode = topmostNodeFromOuterNodes(ClassFromOuterNode, nodes),
98
+ parseTree = topmostHTMLNode.asParseTree(),
99
+ html = topmostHTMLNode.asHTML(context),
100
+ plainText = divisionMarkdownNode.asPlainText(context),
101
+ innerMarkdownParseTree = parseTree; ///
85
102
 
86
103
  this.updateXMP(html);
87
104
 
@@ -90,6 +107,8 @@ class View extends Element {
90
107
  this.updatePageButtonsDiv(length, index);
91
108
 
92
109
  this.updatePlainTextTextarea(plainText);
110
+
111
+ this.updateInnerMarkdownParseTreeTextarea(innerMarkdownParseTree);
93
112
  }
94
113
 
95
114
  updateMarkdown() {
@@ -123,9 +142,10 @@ class View extends Element {
123
142
 
124
143
  this.setDivisionMarkdownNodes(divisionMarkdownNodes);
125
144
 
126
- const parseTree = divisionMarkdownNode.asParseTree(tokens);
145
+ const parseTree = divisionMarkdownNode.asParseTree(tokens),
146
+ outerMarkdownParseTree = parseTree; ///
127
147
 
128
- this.updateMarkdownParseTreeTextarea(parseTree);
148
+ this.updateOuterMarkdownParseTreeTextarea(outerMarkdownParseTree);
129
149
 
130
150
  const index = 0,
131
151
  length = divisionMarkdownNodes.length;
@@ -142,7 +162,7 @@ class View extends Element {
142
162
 
143
163
  this.clearPlainTextTextarea();
144
164
 
145
- this.clearMarkdownParseTreeTextarea();
165
+ this.clearOuterMarkdownParseTreeTextarea();
146
166
 
147
167
  const divisionMarkdownNodes = null;
148
168
 
@@ -262,10 +282,12 @@ class View extends Element {
262
282
  onCustomPreview={this.previewCustomHandler}
263
283
  onCustomPlainText={this.plainTextCustomHandler}
264
284
  />
285
+ <PageButtonsDiv onCustomPageUpdate={this.pageUpdateCustomHandler} />
265
286
  <CSSContainerDiv/>
266
287
  <HTMLContainerDiv/>
267
- <PreviewContainerDiv onCustomPageUpdate={this.pageUpdateCustomHandler} />
288
+ <PreviewContainerDiv/>
268
289
  <PlainTextContainerDiv/>
290
+ <InnerMarkdownParseTreeTextarea/>
269
291
  </RowsDiv>
270
292
  </ColumnDiv>
271
293
  </ColumnsDiv>
@@ -291,6 +313,15 @@ class View extends Element {
291
313
  this.css();
292
314
  }
293
315
 
316
+ static initialMarkdown = defaultContent; ///
317
+
318
+ static initialMarkdownStyle = `width: 100%;
319
+ height: 199%;
320
+ position: absolute;
321
+ min-height: 100%;
322
+ padding-top: 5rem;
323
+ `;
324
+
294
325
  static tagName = "div";
295
326
 
296
327
  static ignoredProperties = [
@@ -300,18 +331,6 @@ class View extends Element {
300
331
  static defaultProperties = {
301
332
  className: "view"
302
333
  };
303
-
304
- static initialMarkdown = defaultContent; ///
305
-
306
- static initialMarkdownStyle = `
307
-
308
- width: 100%;
309
- height: 199%;
310
- position: absolute;
311
- min-height: 100%;
312
- padding-top: 5rem;
313
-
314
- `;
315
334
  }
316
335
 
317
336
  export default withStyle(View)`
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ import { ID_ATTRIBUTE_NAME } from "../../attributeNames";
6
+
7
+ export default class AnchorHTMLNode extends HTMLNode {
8
+ content(context) { return this.outerNode.content(context); }
9
+
10
+ attributeName(context) {
11
+ const attributeName = ID_ATTRIBUTE_NAME;
12
+
13
+ return attributeName;
14
+ }
15
+
16
+ attributeValue(context) {
17
+ const attributeValue = `${this.prepend}-${this.identifier}`;
18
+
19
+ return attributeValue;
20
+ }
21
+
22
+ asHTML(indent, context) {
23
+ if (context === undefined) {
24
+ context = indent; ///
25
+
26
+ indent = null;
27
+ }
28
+
29
+ indent = this.adjustIndent(indent);
30
+
31
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
32
+ startingTag = this.startingTag(context),
33
+ closingTag = this.closingTag(context),
34
+ html = (indent === null) ?
35
+ `${startingTag}${childNodesHTML}${closingTag}` :
36
+ `${indent}${startingTag}
37
+ ${childNodesHTML}${indent}${closingTag}
38
+ `;
39
+
40
+ return html;
41
+ }
42
+
43
+ childNodesAsHTML(indent, context) {
44
+ const content = this.content(context),
45
+ childNodesHTML = content; ///
46
+
47
+ return childNodesHTML;
48
+ }
49
+
50
+ static fromNothing() { return HTMLNode.fromNothing(AnchorHTMLNode); }
51
+
52
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(AnchorHTMLNode, outerNode); }
53
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class BlockLineHTMLNode extends HTMLNode {
6
+ content(context) { return this.outerNode.content(context); }
7
+
8
+ asHTML(indent, context) {
9
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
10
+ startingTag = this.startingTag(context),
11
+ closingTag = this.closingTag(context),
12
+ html = `${startingTag}${childNodesHTML}${closingTag}`;
13
+
14
+ return html;
15
+ }
16
+
17
+ childNodesAsHTML(indent, context) {
18
+ const content = this.content(context),
19
+ childNodesHTML = content; ///
20
+
21
+ return childNodesHTML;
22
+ }
23
+
24
+ static fromNothing() { return HTMLNode.fromNothing(BlockLineHTMLNode); }
25
+
26
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(BlockLineHTMLNode, outerNode); }
27
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class BlockListingHTMLNode extends HTMLNode {
6
+ className(context) { return this.outerNode.className(context); }
7
+
8
+ asHTML(indent, context) {
9
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
10
+ startingTag = this.startingTag(context),
11
+ closingTag = this.closingTag(context),
12
+ html = `${startingTag}${childNodesHTML}${closingTag}`;
13
+
14
+ return html;
15
+ }
16
+
17
+ static fromNothing() { return HTMLNode.fromNothing(BlockListingHTMLNode); }
18
+
19
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(BlockListingHTMLNode, outerNode); }
20
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import HHTMLNode from "../../node/html";
4
+
5
+ export default class BlockListingHEndHTMLNode extends HHTMLNode {
6
+ className(context) { return this.outerNode.className(context); }
7
+
8
+ static fromNothing() { return HHTMLNode.fromNothing(BlockListingHEndHTMLNode); }
9
+
10
+ static fromOuterNode(outerNode) { return HHTMLNode.fromOuterNode(BlockListingHEndHTMLNode, outerNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import HHTMLNode from "../../node/html";
4
+
5
+ export default class BlockListingHStartHTMLNode extends HHTMLNode {
6
+ className(context) { return this.outerNode.className(context); }
7
+
8
+ static fromNothing() { return HHTMLNode.fromNothing(BlockListingHStartHTMLNode); }
9
+
10
+ static fromOuterNode(outerNode) { return HHTMLNode.fromOuterNode(BlockListingHStartHTMLNode, outerNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class ClassNameHTMLNode extends HTMLNode {
6
+ className(context) { return this.outerNode.className(context); }
7
+
8
+ static fromNothing() { return HTMLNode.fromNothing(ClassNameHTMLNode); }
9
+
10
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ClassNameHTMLNode, outerNode); }
11
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class CommaHTMLNode extends HTMLNode {
6
+ content(context) { return this.outerNode.content(context); }
7
+
8
+ asHTML(indent, context) {
9
+ const content = this.content(context),
10
+ html = content; ///
11
+
12
+ return html;
13
+ }
14
+
15
+ static fromNothing() { return HTMLNode.fromNothing(CommaHTMLNode); }
16
+
17
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(CommaHTMLNode, outerNode); }
18
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ import { CONTENTS_PREPEND } from "../../prepends";
6
+ import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
7
+
8
+ export default class ContentsLinkHTMLNode extends HTMLNode {
9
+ getIdentifier() { return this.outerNode.getIdentifier(); }
10
+
11
+ attributeName(context) {
12
+ const attributeName = HREF_ATTRIBUTE_NAME;
13
+
14
+ return attributeName;
15
+ }
16
+
17
+ attributeValue(context) {
18
+ const prepend = CONTENTS_PREPEND,
19
+ identifier = this.getIdentifier(),
20
+ attributeValue = `#${prepend}-${identifier}`;
21
+
22
+ return attributeValue;
23
+ }
24
+
25
+ static fromNothing() { return HTMLNode.fromNothing(ContentsLinkHTMLNode); }
26
+
27
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ContentsLinkHTMLNode, outerNode); }
28
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../html";
4
+
5
+ export default class PageNumberDirectiveHTMLNode extends HTMLNode {
6
+ getRuleName() {} ///
7
+
8
+ tagName(context) {} ///
9
+
10
+ className(context) {} ///
11
+
12
+ closingTag(context) {} ///
13
+
14
+ startingTag(context) {} ///
15
+
16
+ selfClosingTag(context) {} ///
17
+
18
+ attributeName(context) {} ///
19
+
20
+ attributeValue(context) {} ///
21
+
22
+ adjustIndent(indent) {} ///
23
+
24
+ getPageNumber() { return this.outerNode.getPageNumber(); }
25
+
26
+ content(context) {
27
+ const pageNumber = this.getPageNumber(),
28
+ content = pageNumber;
29
+
30
+ return content;
31
+ }
32
+
33
+ asHTML(indent, context) {
34
+ indent = this.adjustIndent(indent);
35
+
36
+ const childNodesHTML = this.childNodesAsHTML(indent, context),
37
+ startingTag = this.startingTag(context),
38
+ closingTag = this.closingTag(context),
39
+ html = `${indent}${startingTag}${childNodesHTML}${closingTag}
40
+ `;
41
+
42
+ return html;
43
+ }
44
+
45
+ childNodesAsHTML(indent, context) {
46
+ const content = this.content(context),
47
+ childNodesHTML = content; ///
48
+
49
+ return childNodesHTML;
50
+ }
51
+
52
+ static fromNothing() { return HTMLNode.fromNothing(PageNumberDirectiveHTMLNode); }
53
+
54
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(PageNumberDirectiveHTMLNode, outerNode); }
55
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../html";
4
+
5
+ import { VALUE_ATTRIBUTE_NAME } from "../../../attributeNames";
6
+
7
+ export default class OrderedItemHTMLNode extends HTMLNode {
8
+ value(context) { return this.outerNode.value(context); }
9
+
10
+ attributeName(context) {
11
+ const attributeName = VALUE_ATTRIBUTE_NAME;
12
+
13
+ return attributeName;
14
+ }
15
+
16
+ attributeValue(context) {
17
+ const value = this.value(context),
18
+ attributeValue = value; ///
19
+
20
+ return attributeValue;
21
+ }
22
+
23
+ static fromNothing() { return HTMLNode.fromNothing(OrderedItemHTMLNode); }
24
+
25
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(OrderedItemHTMLNode, outerNode); }
26
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class TopmostHTMLNode extends HTMLNode {
6
+ asHTML(context) {
7
+ let html;
8
+
9
+ const indent = null,
10
+ childNodesHTML = this.childNodesAsHTML(indent, context);
11
+
12
+ html = childNodesHTML; ///
13
+
14
+ return html;
15
+ }
16
+
17
+ static fromNothing() { return HTMLNode.fromNothing(TopmostHTMLNode); }
18
+
19
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(TopmostHTMLNode, outerNode); }
20
+ }