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.
- package/example.js +6921 -3362
- package/lib/classFromOuterNode.js +30 -0
- package/lib/constants.js +5 -1
- package/lib/example/constants.js +5 -1
- package/lib/example/view/button/page.js +2 -2
- package/lib/example/view/div/container/markdown.js +33 -4
- package/lib/example/view/div/container/markdownStyle.js +31 -2
- package/lib/example/view/div/container/preview.js +3 -9
- package/lib/example/view/div/container.js +2 -2
- package/lib/example/view/div/html.js +2 -2
- package/lib/example/view/div/pageButtons.js +2 -2
- package/lib/example/view/div/preview.js +1 -14
- package/lib/example/view/textarea/css.js +2 -2
- package/lib/example/view/textarea/markdown.js +2 -2
- package/lib/example/view/textarea/markdownStyle.js +2 -2
- package/lib/example/view/textarea/parseTree/markdown/inner.js +179 -0
- package/lib/example/view/textarea/parseTree/markdown/outer.js +148 -0
- package/lib/example/view/textarea/parseTree/markdown.js +1 -27
- package/lib/example/view/textarea/parseTree/markdownStyle.js +23 -2
- package/lib/example/view/textarea/parseTree.js +2 -2
- package/lib/example/view/textarea/plainText.js +2 -2
- package/lib/example/view/textarea.js +2 -2
- package/lib/example/view.js +20 -10
- package/lib/node/html/anchor.js +154 -0
- package/lib/node/html/blockLine.js +134 -0
- package/lib/node/html/blockListing.js +127 -0
- package/lib/node/html/blockListingEnd.js +120 -0
- package/lib/node/html/blockListingStart.js +120 -0
- package/lib/node/html/className.js +120 -0
- package/lib/node/html/comma.js +127 -0
- package/lib/node/html/contentsLink.js +136 -0
- package/lib/node/html/directive/pageNumber.js +178 -0
- package/lib/node/html/item/ordered.js +135 -0
- package/lib/node/html/topmost.js +123 -0
- package/lib/node/html.js +281 -0
- package/lib/node/markdown/anchor.js +1 -34
- package/lib/node/markdown/blockLine.js +1 -15
- package/lib/node/markdown/blockListing.js +1 -8
- package/lib/node/markdown/comma.js +1 -8
- package/lib/node/markdown/contentsLink.js +1 -17
- package/lib/node/markdown/directive/pageNumber.js +1 -16
- package/lib/node/markdown/item/ordered.js +1 -16
- package/lib/node/markdown.js +1 -66
- package/lib/queries.js +60 -0
- package/lib/ruleNameToClassMap.js +44 -0
- package/lib/utilities/query.js +12 -1
- package/package.json +4 -4
- package/src/classFromOuterNode.js +20 -0
- package/src/constants.js +1 -0
- package/src/example/constants.js +1 -0
- package/src/example/view/button/page.js +1 -1
- package/src/example/view/div/container/markdown.js +23 -4
- package/src/example/view/div/container/markdownStyle.js +21 -2
- package/src/example/view/div/container/preview.js +1 -9
- package/src/example/view/div/container.js +2 -0
- package/src/example/view/div/html.js +1 -1
- package/src/example/view/div/pageButtons.js +2 -2
- package/src/example/view/div/preview.js +0 -17
- package/src/example/view/textarea/css.js +1 -1
- package/src/example/view/textarea/markdown.js +2 -2
- package/src/example/view/textarea/markdownStyle.js +2 -2
- package/src/example/view/textarea/parseTree/markdown/inner.js +36 -0
- package/src/example/view/textarea/parseTree/markdown/outer.js +27 -0
- package/src/example/view/textarea/parseTree/markdown.js +1 -11
- package/src/example/view/textarea/parseTree/markdownStyle.js +10 -2
- package/src/example/view/textarea/parseTree.js +0 -2
- package/src/example/view/textarea/plainText.js +2 -2
- package/src/example/view/textarea.js +1 -1
- package/src/example/view.js +38 -19
- package/src/node/html/anchor.js +53 -0
- package/src/node/html/blockLine.js +27 -0
- package/src/node/html/blockListing.js +20 -0
- package/src/node/html/blockListingEnd.js +11 -0
- package/src/node/html/blockListingStart.js +11 -0
- package/src/node/html/className.js +11 -0
- package/src/node/html/comma.js +18 -0
- package/src/node/html/contentsLink.js +28 -0
- package/src/node/html/directive/pageNumber.js +55 -0
- package/src/node/html/item/ordered.js +26 -0
- package/src/node/html/topmost.js +20 -0
- package/src/node/html.js +183 -0
- package/src/node/markdown/anchor.js +0 -40
- package/src/node/markdown/blockLine.js +0 -16
- package/src/node/markdown/blockListing.js +0 -9
- package/src/node/markdown/comma.js +0 -7
- package/src/node/markdown/contentsLink.js +0 -15
- package/src/node/markdown/directive/pageNumber.js +0 -19
- package/src/node/markdown/item/ordered.js +0 -15
- package/src/node/markdown.js +0 -100
- package/src/queries.js +94 -0
- package/src/ruleNameToClassMap.js +38 -0
- package/src/utilities/query.js +12 -0
|
@@ -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
|
};
|
|
@@ -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
|
-
|
|
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
|
+
`;
|
package/src/example/view.js
CHANGED
|
@@ -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
|
-
|
|
84
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
+
}
|