highmark-markdown 0.0.379 → 0.0.382
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 +4764 -3417
- package/lib/attributeNames.js +5 -1
- package/lib/constants.js +1 -5
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/example/constants.js +15 -7
- package/lib/example/customEventTypes.js +5 -1
- package/lib/example/view/button/page.js +168 -0
- package/lib/example/view/div/html.js +2 -2
- package/lib/example/view/div/pageButtons.js +270 -0
- package/lib/example/view/div/preview.js +105 -13
- package/lib/example/view/textarea/css.js +2 -2
- package/lib/example/view/xmp.js +2 -4
- package/lib/example/view.js +88 -34
- package/lib/example.js +2 -2
- package/lib/index.js +15 -11
- package/lib/markdown/bnf.js +2 -2
- package/lib/mixins/node.js +10 -3
- package/lib/node/markdown/anchor.js +5 -2
- package/lib/node/markdown/blockLine.js +3 -2
- package/lib/node/markdown/contentsLink.js +4 -4
- package/lib/node/markdown/directive/contents.js +6 -6
- package/lib/node/markdown/directive/embee.js +12 -12
- package/lib/node/markdown/directive/footnotes.js +6 -6
- package/lib/node/markdown/directive/ignore.js +6 -6
- package/lib/node/markdown/directive/include.js +6 -6
- package/lib/node/markdown/directive/pageNumber.js +74 -9
- package/lib/node/markdown/directive.js +128 -0
- package/lib/node/markdown/directives.js +33 -2
- package/lib/node/markdown/division.js +128 -28
- package/lib/node/markdown/emailLink.js +8 -1
- package/lib/node/markdown/endOfLine.js +8 -1
- package/lib/node/markdown/footnoteItem.js +3 -3
- package/lib/node/markdown/footnotesList.js +95 -27
- package/lib/node/markdown/heading/primary.js +2 -1
- package/lib/node/markdown/heading/quaternary.js +2 -1
- package/lib/node/markdown/heading/secondary.js +2 -1
- package/lib/node/markdown/heading/tertiary.js +2 -1
- package/lib/node/markdown/heading.js +8 -1
- package/lib/node/markdown/line.js +8 -1
- package/lib/node/markdown/subDivision.js +17 -10
- package/lib/node/markdown.js +15 -1
- package/lib/replacement.js +185 -0
- package/lib/utilities/childNodes.js +7 -5
- package/lib/utilities/content.js +7 -7
- package/lib/utilities/markdown.js +87 -0
- package/lib/utilities/node.js +163 -0
- package/lib/utilities/query.js +25 -9
- package/package.json +1 -1
- package/src/attributeNames.js +1 -0
- package/src/constants.js +0 -1
- package/src/defaultMarkdownStyle.js +5 -1
- package/src/example/constants.js +4 -2
- package/src/example/customEventTypes.js +1 -0
- package/src/example/view/button/page.js +48 -0
- package/src/example/view/div/html.js +0 -1
- package/src/example/view/div/pageButtons.js +98 -0
- package/src/example/view/div/preview.js +51 -11
- package/src/example/view/textarea/css.js +1 -1
- package/src/example/view/xmp.js +1 -5
- package/src/example/view.js +117 -51
- package/src/example.js +2 -2
- package/src/index.js +9 -6
- package/src/markdown/bnf.js +21 -23
- package/src/mixins/node.js +20 -2
- package/src/node/markdown/anchor.js +7 -2
- package/src/node/markdown/blockLine.js +3 -3
- package/src/node/markdown/contentsLink.js +3 -3
- package/src/node/markdown/directive/contents.js +3 -3
- package/src/node/markdown/directive/embee.js +8 -8
- package/src/node/markdown/directive/footnotes.js +3 -3
- package/src/node/markdown/directive/ignore.js +3 -3
- package/src/node/markdown/directive/include.js +3 -3
- package/src/node/markdown/directive/pageNumber.js +53 -5
- package/src/node/markdown/directive.js +13 -0
- package/src/node/markdown/directives.js +10 -1
- package/src/node/markdown/division.js +144 -26
- package/src/node/markdown/emailLink.js +6 -0
- package/src/node/markdown/endOfLine.js +6 -0
- package/src/node/markdown/footnoteItem.js +1 -1
- package/src/node/markdown/footnotesList.js +87 -31
- package/src/node/markdown/heading/primary.js +2 -0
- package/src/node/markdown/heading/quaternary.js +2 -0
- package/src/node/markdown/heading/secondary.js +2 -0
- package/src/node/markdown/heading/tertiary.js +2 -0
- package/src/node/markdown/heading.js +6 -0
- package/src/node/markdown/line.js +12 -1
- package/src/node/markdown/subDivision.js +18 -12
- package/src/node/markdown.js +19 -0
- package/src/replacement.js +158 -0
- package/src/utilities/childNodes.js +6 -4
- package/src/utilities/content.js +12 -20
- package/src/utilities/markdown.js +103 -0
- package/src/utilities/node.js +158 -0
- package/src/utilities/query.js +22 -6
- package/lib/replacementNodeAndTokens.js +0 -149
- package/lib/utilities/footnotes.js +0 -20
- package/lib/utilities/replace.js +0 -66
- package/src/replacementNodeAndTokens.js +0 -152
- package/src/utilities/footnotes.js +0 -16
- package/src/utilities/replace.js +0 -31
package/src/example/view/xmp.js
CHANGED
package/src/example/view.js
CHANGED
|
@@ -16,6 +16,9 @@ import RightSizeableDiv from "./view/div/sizeable/right";
|
|
|
16
16
|
import MarkdownContainerDiv from "./view/div/container/markdown";
|
|
17
17
|
import MarkdownStyleContainerDiv from "./view/div/container/markdownStyle";
|
|
18
18
|
|
|
19
|
+
import { postprocess } from "../utilities/markdown";
|
|
20
|
+
import { LINES_PER_PAGE, CHARACTERS_PER_LINE, INTRODUCTION_CLASS_NAME } from "./constants";
|
|
21
|
+
|
|
19
22
|
const markdownLexer = MarkdownLexer.fromNothing(),
|
|
20
23
|
markdownParser = MarkdownParser.fromNothing(),
|
|
21
24
|
markdownStyleLexer = MarkdownStyleLexer.fromNothing(),
|
|
@@ -26,6 +29,12 @@ class View extends Element {
|
|
|
26
29
|
this.markdownStyle();
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
pageUpdateCustomHandler = (event, element, index) => {
|
|
33
|
+
this.clearPage();
|
|
34
|
+
|
|
35
|
+
this.updatePage(index);
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
markdownCustomHandler = (event, element) => {
|
|
30
39
|
this.markdown();
|
|
31
40
|
}
|
|
@@ -63,66 +72,75 @@ class View extends Element {
|
|
|
63
72
|
lexer = markdownLexer, ///
|
|
64
73
|
parser = markdownParser, ///
|
|
65
74
|
content = markdown, ///
|
|
66
|
-
tokens = lexer.tokenise(content),
|
|
67
|
-
startRule = parser.getStartRule(),
|
|
68
75
|
startOfContent = true,
|
|
76
|
+
startRule = parser.getStartRule(),
|
|
77
|
+
tokens = lexer.tokenise(content),
|
|
69
78
|
node = parser.parse(tokens, startRule, startOfContent);
|
|
70
79
|
|
|
80
|
+
this.setTokens(tokens);
|
|
81
|
+
|
|
71
82
|
if (node !== null) {
|
|
72
|
-
const
|
|
73
|
-
divisionMarkdownNode = node
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
const divisionClassName = INTRODUCTION_CLASS_NAME,
|
|
84
|
+
divisionMarkdownNode = node; ///
|
|
85
|
+
|
|
86
|
+
divisionMarkdownNode.setDivisionClassName(divisionClassName);
|
|
87
|
+
|
|
88
|
+
const linesPerPage = LINES_PER_PAGE,
|
|
89
|
+
charactersPerLine = CHARACTERS_PER_LINE,
|
|
77
90
|
context = {
|
|
78
91
|
tokens,
|
|
79
92
|
importer,
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
93
|
+
linesPerPage,
|
|
94
|
+
charactersPerLine
|
|
95
|
+
},
|
|
96
|
+
divisionMarkdownNodes = postprocess(divisionMarkdownNode, context);
|
|
83
97
|
|
|
84
|
-
|
|
98
|
+
this.setDivisionMarkdownNodes(divisionMarkdownNodes);
|
|
85
99
|
|
|
86
|
-
|
|
87
|
-
|
|
100
|
+
const index = 0,
|
|
101
|
+
length = divisionMarkdownNodes.length,
|
|
102
|
+
parseTree = divisionMarkdownNode.asParseTree(tokens);
|
|
88
103
|
|
|
89
|
-
|
|
90
|
-
});
|
|
104
|
+
this.updatePage(index);
|
|
91
105
|
|
|
92
|
-
|
|
93
|
-
const contentsCreated = divisionMarkdownNode.createContents(context);
|
|
106
|
+
this.updatePageButtonsDiv(length);
|
|
94
107
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
});
|
|
108
|
+
this.updateMarkdownParseTreeTextarea(parseTree);
|
|
109
|
+
} else {
|
|
110
|
+
this.clearPage();
|
|
99
111
|
|
|
100
|
-
|
|
101
|
-
domElements = [];
|
|
112
|
+
this.clearPageButtonsDiv();
|
|
102
113
|
|
|
103
|
-
|
|
104
|
-
const html = divisionMarkdownNode.asHTML(context),
|
|
105
|
-
domElement = divisionMarkdownNode.createDOMElement(context);
|
|
114
|
+
this.clearMarkdownParseTreeTextarea();
|
|
106
115
|
|
|
107
|
-
|
|
116
|
+
const divisionMarkdownNodes = null;
|
|
108
117
|
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
this.setDivisionMarkdownNodes(divisionMarkdownNodes);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
111
121
|
|
|
112
|
-
|
|
122
|
+
updatePage(index) {
|
|
123
|
+
const divisionMarkdownNodes = this.getDivisionMarkdownNodes(),
|
|
124
|
+
divisionMarkdownNode = divisionMarkdownNodes[index],
|
|
125
|
+
tokens = this.getTokens(),
|
|
126
|
+
context = {
|
|
127
|
+
tokens
|
|
128
|
+
},
|
|
129
|
+
length = null,
|
|
130
|
+
html = divisionMarkdownNode.asHTML(context),
|
|
131
|
+
domElement = divisionMarkdownNode.createDOMElement(context);
|
|
113
132
|
|
|
114
|
-
|
|
133
|
+
this.updateXMP(html);
|
|
115
134
|
|
|
116
|
-
|
|
135
|
+
this.updatePreviewDiv(domElement);
|
|
117
136
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
this.clearXMP();
|
|
137
|
+
this.updatePageButtonsDiv(length, index);
|
|
138
|
+
}
|
|
121
139
|
|
|
122
|
-
|
|
140
|
+
clearPage() {
|
|
141
|
+
this.clearXMP();
|
|
123
142
|
|
|
124
|
-
|
|
125
|
-
}
|
|
143
|
+
this.clearPreviewDiv();
|
|
126
144
|
}
|
|
127
145
|
|
|
128
146
|
markdownStyle() {
|
|
@@ -140,6 +158,40 @@ class View extends Element {
|
|
|
140
158
|
this.updateMarkdownStyle();
|
|
141
159
|
}
|
|
142
160
|
|
|
161
|
+
getTokens() {
|
|
162
|
+
const { tokens } = this.getState();
|
|
163
|
+
|
|
164
|
+
return tokens;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
setTokens(tokens) {
|
|
168
|
+
this.updateState({
|
|
169
|
+
tokens
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
getDivisionMarkdownNodes() {
|
|
174
|
+
const { divisionMarkdownNodes } = this.getState();
|
|
175
|
+
|
|
176
|
+
return divisionMarkdownNodes;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
setDivisionMarkdownNodes(divisionMarkdownNodes) {
|
|
180
|
+
this.updateState({
|
|
181
|
+
divisionMarkdownNodes
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
setInitialState() {
|
|
186
|
+
const tokens = null,
|
|
187
|
+
divisionMarkdownNodes = null;
|
|
188
|
+
|
|
189
|
+
this.setState({
|
|
190
|
+
tokens,
|
|
191
|
+
divisionMarkdownNodes
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
143
195
|
childElements() {
|
|
144
196
|
return (
|
|
145
197
|
|
|
@@ -168,7 +220,7 @@ class View extends Element {
|
|
|
168
220
|
<SubHeading>
|
|
169
221
|
Preview
|
|
170
222
|
</SubHeading>
|
|
171
|
-
<PreviewDiv/>
|
|
223
|
+
<PreviewDiv onCustomPageUpdate={this.pageUpdateCustomHandler} />
|
|
172
224
|
</RowsDiv>
|
|
173
225
|
</RowDiv>
|
|
174
226
|
</RowsDiv>
|
|
@@ -181,6 +233,8 @@ class View extends Element {
|
|
|
181
233
|
initialise() {
|
|
182
234
|
this.assignContext();
|
|
183
235
|
|
|
236
|
+
this.setInitialState();
|
|
237
|
+
|
|
184
238
|
const { initialMarkdown, initialMarkdownStyle } = this.constructor,
|
|
185
239
|
markdownStyle = initialMarkdownStyle, ///
|
|
186
240
|
markdown = initialMarkdown; ///
|
|
@@ -192,17 +246,6 @@ class View extends Element {
|
|
|
192
246
|
this.update();
|
|
193
247
|
}
|
|
194
248
|
|
|
195
|
-
static initialMarkdownStyle = `pageNumber {
|
|
196
|
-
colour: red;
|
|
197
|
-
}
|
|
198
|
-
`;
|
|
199
|
-
|
|
200
|
-
static initialMarkdown = `* Occam [^occam].
|
|
201
|
-
|
|
202
|
-
[^occam]: Occam.
|
|
203
|
-
|
|
204
|
-
`;
|
|
205
|
-
|
|
206
249
|
static tagName = "div";
|
|
207
250
|
|
|
208
251
|
static ignoredProperties = [
|
|
@@ -212,6 +255,29 @@ class View extends Element {
|
|
|
212
255
|
static defaultProperties = {
|
|
213
256
|
className: "view"
|
|
214
257
|
};
|
|
258
|
+
|
|
259
|
+
static initialMarkdown = `
|
|
260
|
+
|
|
261
|
+
Occam [^occam].
|
|
262
|
+
|
|
263
|
+
A paragraph to trigger the pagination.
|
|
264
|
+
|
|
265
|
+
Occam and Florence [^occam] [^florence].
|
|
266
|
+
|
|
267
|
+
[^occam]: Occam footnote.
|
|
268
|
+
|
|
269
|
+
[^florence]: Florence footnote.
|
|
270
|
+
|
|
271
|
+
@footnotes
|
|
272
|
+
|
|
273
|
+
@pageNumber
|
|
274
|
+
`;
|
|
275
|
+
|
|
276
|
+
static initialMarkdownStyle = `width: 100%;
|
|
277
|
+
position: absolute;
|
|
278
|
+
min-height: 100%;
|
|
279
|
+
padding-top: 5rem;
|
|
280
|
+
`;
|
|
215
281
|
}
|
|
216
282
|
|
|
217
283
|
export default withStyle(View)`
|
|
@@ -221,7 +287,7 @@ export default withStyle(View)`
|
|
|
221
287
|
`;
|
|
222
288
|
|
|
223
289
|
function importer(filePath, context) {
|
|
224
|
-
const content = `#
|
|
290
|
+
const content = `#Introuction
|
|
225
291
|
`,
|
|
226
292
|
startOfContent = true,
|
|
227
293
|
startRule = markdownParser.getStartRule(),
|
package/src/example.js
CHANGED
|
@@ -9,13 +9,13 @@ import { mediaTypeNames, MarkdownStyleElement, DefaultMarkdownStyleElement } fro
|
|
|
9
9
|
|
|
10
10
|
import View from "./example/view";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { INTRODUCTION_DIV_SELECTORS_STRING } from "./example/constants";
|
|
13
13
|
|
|
14
14
|
const { renderStyles } = withStyle,
|
|
15
15
|
{ PREVIEW_MEDIA_TYPE_NAME } = mediaTypeNames;
|
|
16
16
|
|
|
17
17
|
const mediaTypeName = PREVIEW_MEDIA_TYPE_NAME,
|
|
18
|
-
selectorsString =
|
|
18
|
+
selectorsString = INTRODUCTION_DIV_SELECTORS_STRING;
|
|
19
19
|
|
|
20
20
|
DefaultMarkdownStyleElement.fromMediaTypeNameAndSelectorsString(mediaTypeName, selectorsString);
|
|
21
21
|
|
package/src/index.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
export { default as MarkdownLexer } from "./markdown/lexer";
|
|
4
|
+
export { default as MarkdownParser } from "./markdown/parser";
|
|
5
|
+
export { default as MarkdownStyleLexer } from "./markdownStyle/lexer";
|
|
6
|
+
export { default as MarkdownStyleParser } from "./markdownStyle/parser";
|
|
7
|
+
|
|
8
|
+
export { default as cssUtilities } from "./utilities/css";
|
|
9
|
+
export { default as queryUtilities } from "./utilities/query";
|
|
10
|
+
export { default as markdownUtilities } from "./utilities/markdown";
|
|
11
|
+
|
|
3
12
|
export { default as nodeMap } from "./nodeMap";
|
|
4
13
|
export { default as ruleNames } from "./ruleNames";
|
|
5
14
|
export { default as tokenTypes } from "./tokenTypes";
|
|
6
15
|
export { default as elementMap } from "./elementMap";
|
|
7
|
-
export { default as cssUtilities } from "./utilities/css";
|
|
8
16
|
export { default as MarkdownNode } from "./node/markdown";
|
|
9
|
-
export { default as MarkdownLexer } from "./markdown/lexer";
|
|
10
17
|
export { default as mediaTypeNames } from "./mediaTypeNames";
|
|
11
|
-
export { default as MarkdownParser } from "./markdown/parser";
|
|
12
|
-
export { default as queryUtilities } from "./utilities/query";
|
|
13
|
-
export { default as MarkdownStyleLexer } from "./markdownStyle/lexer";
|
|
14
|
-
export { default as MarkdownStyleParser } from "./markdownStyle/parser";
|
|
15
18
|
export { default as MarkdownStyleElement } from "./styleElement/markdown";
|
|
16
19
|
export { default as defaultMarkdownStyle } from "./defaultMarkdownStyle";
|
|
17
20
|
export { default as DefaultMarkdownStyleElement } from "./styleElement/markdown/default";
|
package/src/markdown/bnf.js
CHANGED
|
@@ -41,28 +41,26 @@ const bnf = `
|
|
|
41
41
|
;
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
directives ::=
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
| footnotesDirective ) )* ;
|
|
65
|
-
|
|
44
|
+
directives ::= pageNumber
|
|
45
|
+
|
|
46
|
+
| ignoreDirective
|
|
47
|
+
|
|
48
|
+
| contentsDirective
|
|
49
|
+
|
|
50
|
+
| footnotesDirective
|
|
51
|
+
|
|
52
|
+
| (
|
|
53
|
+
|
|
54
|
+
( embedDirective
|
|
55
|
+
|
|
56
|
+
| includeDirective ) ( endOfLine ( embedDirective
|
|
57
|
+
|
|
58
|
+
| includeDirective ) )*
|
|
59
|
+
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
;
|
|
63
|
+
|
|
66
64
|
|
|
67
65
|
primaryHeading. ::= "#" line ;
|
|
68
66
|
|
|
@@ -244,7 +242,7 @@ const bnf = `
|
|
|
244
242
|
;
|
|
245
243
|
|
|
246
244
|
|
|
247
|
-
anchor. ::=
|
|
245
|
+
anchor. ::= ε ;
|
|
248
246
|
|
|
249
247
|
|
|
250
248
|
reference. ::= [reference] ;
|
package/src/mixins/node.js
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
const { first, last } = arrayUtilities;
|
|
6
|
+
|
|
7
|
+
function removeChildNodes(removedChildNodes) {
|
|
8
|
+
const childNodes = this.getChildNodes(),
|
|
9
|
+
firstRemovedChildNode = first(removedChildNodes),
|
|
10
|
+
lastRemovedChildNode = last(removedChildNodes),
|
|
11
|
+
firstIndex = childNodes.indexOf(firstRemovedChildNode), ///
|
|
12
|
+
lastIndex = childNodes.indexOf(lastRemovedChildNode), ///
|
|
13
|
+
start = firstIndex, ///
|
|
14
|
+
end = lastIndex + 1,
|
|
15
|
+
deleteCount = end - start;
|
|
16
|
+
|
|
17
|
+
childNodes.splice(start, deleteCount);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function removeChildNode(removedChildNode) {
|
|
4
21
|
const childNodes = this.getChildNodes(),
|
|
5
|
-
index = childNodes.indexOf(
|
|
22
|
+
index = childNodes.indexOf(removedChildNode),
|
|
6
23
|
start = index, ///
|
|
7
24
|
deleteCount = 1;
|
|
8
25
|
|
|
@@ -51,6 +68,7 @@ function getDescendantNodes(descendantNodes = []) {
|
|
|
51
68
|
}
|
|
52
69
|
|
|
53
70
|
const nodeMixins = {
|
|
71
|
+
removeChildNodes,
|
|
54
72
|
removeChildNode,
|
|
55
73
|
appendChildNode,
|
|
56
74
|
prependChildNode,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { EpsilonNode } from "occam-parsers";
|
|
4
|
+
|
|
3
5
|
import MarkdownNode from "../../node/markdown";
|
|
4
6
|
|
|
5
7
|
import { EMPTY_STRING } from "../../constants";
|
|
@@ -47,8 +49,11 @@ export default class AnchorMarkdownNode extends MarkdownNode {
|
|
|
47
49
|
clone() { return super.clone(this.identifier); }
|
|
48
50
|
|
|
49
51
|
static fromIdentifier(identifier) {
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
+
const epsilonNode = EpsilonNode.fromNothing(),
|
|
53
|
+
ruleName = ANCHOR_RULE_NAME,
|
|
54
|
+
childNodes = [
|
|
55
|
+
epsilonNode
|
|
56
|
+
],
|
|
52
57
|
opacity = null,
|
|
53
58
|
anchorMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(AnchorMarkdownNode, ruleName, childNodes, opacity, identifier);
|
|
54
59
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import MarkdownNode from "../../node/markdown";
|
|
4
4
|
|
|
5
5
|
import { contentFromNode } from "../../utilities/content";
|
|
6
|
+
import { leadingIndexFromNodeAndTokens } from "../../utilities/node";
|
|
6
7
|
|
|
7
8
|
export default class BlockLineMarkdownNode extends MarkdownNode {
|
|
8
9
|
content(context) {
|
|
@@ -13,9 +14,8 @@ export default class BlockLineMarkdownNode extends MarkdownNode {
|
|
|
13
14
|
|
|
14
15
|
content = contentFromNode(node, context);
|
|
15
16
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
previousTokenIndex = firstSignificantTokenIndex - 1,
|
|
17
|
+
const leadingIndex = leadingIndexFromNodeAndTokens(node, tokens),
|
|
18
|
+
previousTokenIndex = leadingIndex - 1,
|
|
19
19
|
previousToken = tokens[previousTokenIndex],
|
|
20
20
|
previousTokenWhitespaceToken = previousToken.isWhitespaceToken();
|
|
21
21
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import Replacement from "../../replacement";
|
|
5
6
|
import MarkdownNode from "../../node/markdown";
|
|
6
|
-
import ReplacementNodeAndTokens from "../../replacementNodeAndTokens";
|
|
7
7
|
|
|
8
8
|
import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
9
9
|
import { CONTENTS_LINK_RULE_NAME } from "../../ruleNames";
|
|
@@ -61,13 +61,13 @@ export default class ContentsLinkMarkdownNode extends MarkdownNode {
|
|
|
61
61
|
const lineMarkdownNode = headingMarkdownNode.getLineMarkdownNode(),
|
|
62
62
|
childNode = lineMarkdownNode, ///
|
|
63
63
|
node = childNode, ///
|
|
64
|
-
|
|
64
|
+
replacement = Replacement.fromNode(node, context),
|
|
65
65
|
ruleName = CONTENTS_LINK_RULE_NAME,
|
|
66
66
|
childNodes = [
|
|
67
67
|
childNode
|
|
68
68
|
],
|
|
69
69
|
opacity = null,
|
|
70
|
-
tokens =
|
|
70
|
+
tokens = replacement.getTokens(),
|
|
71
71
|
identifier = headingMarkdownNode.identifier(context);
|
|
72
72
|
|
|
73
73
|
contentsLinkMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsLinkMarkdownNode, ruleName, childNodes, opacity, tokens, identifier);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
4
4
|
|
|
5
|
-
export default class ContentsDirectiveMarkdownNode extends
|
|
6
|
-
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return
|
|
5
|
+
export default class ContentsDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsDirectiveMarkdownNode, ruleName, childNodes, opacity); }
|
|
7
7
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import Replacement from "../../../replacement";
|
|
6
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
7
7
|
|
|
8
8
|
const { last } = arrayUtilities;
|
|
9
9
|
|
|
10
|
-
export default class EmbedDirectiveMarkdownNode extends
|
|
11
|
-
|
|
12
|
-
let
|
|
10
|
+
export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
11
|
+
replacement(context) {
|
|
12
|
+
let replacement = null;
|
|
13
13
|
|
|
14
14
|
const { importer = null } = context;
|
|
15
15
|
|
|
@@ -29,11 +29,11 @@ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
|
|
|
29
29
|
const node = importedNode, ///
|
|
30
30
|
tokens = importedTokens; ///
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
replacement = Replacement.fromNodeAndTokens(node, tokens);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
return
|
|
36
|
+
return replacement;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
filePath(context) {
|
|
@@ -46,5 +46,5 @@ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
|
|
|
46
46
|
return filePath;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return
|
|
49
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
|
|
50
50
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
4
4
|
|
|
5
|
-
export default class FootnotesDirectiveMarkdownNode extends
|
|
6
|
-
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return
|
|
5
|
+
export default class FootnotesDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(FootnotesDirectiveMarkdownNode, ruleName, childNodes, opacity); }
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
4
4
|
|
|
5
|
-
export default class IgnoreDirectiveMarkdownNode extends
|
|
6
|
-
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return
|
|
5
|
+
export default class IgnoreDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
6
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(IgnoreDirectiveMarkdownNode, ruleName, childNodes, opacity); }
|
|
7
7
|
}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
6
6
|
|
|
7
7
|
const { push, last } = arrayUtilities;
|
|
8
8
|
|
|
9
|
-
export default class IncludeDirectiveMarkdownNode extends
|
|
9
|
+
export default class IncludeDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
10
10
|
resolveIncludes(context) {
|
|
11
11
|
let html = null;
|
|
12
12
|
|
|
@@ -56,5 +56,5 @@ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
|
|
|
56
56
|
return filePath;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return
|
|
59
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
|
|
60
60
|
}
|
|
@@ -1,15 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import DirectiveMarkdownNode from "../../../node/markdown/directive";
|
|
4
|
+
|
|
5
|
+
export default class PageNumberDirectiveMarkdownNode extends DirectiveMarkdownNode {
|
|
6
|
+
constructor(ruleName, childNodes, precedence, opacity, domElement, pageNumber) {
|
|
7
|
+
super(ruleName, childNodes, precedence, opacity, domElement);
|
|
8
|
+
|
|
9
|
+
this.pageNumber = pageNumber;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
getPageNumber() {
|
|
13
|
+
return this.pageNumber;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
setPageNumber(pageNumber) {
|
|
17
|
+
this.pageNumber = pageNumber;
|
|
18
|
+
}
|
|
4
19
|
|
|
5
|
-
export default class PageNumberDirectiveMarkdownNode extends MarkdownNode {
|
|
6
20
|
content(context) {
|
|
7
|
-
const
|
|
8
|
-
content = pageNumber;
|
|
21
|
+
const content = this.pageNumber;
|
|
9
22
|
|
|
10
23
|
return content;
|
|
11
24
|
}
|
|
12
25
|
|
|
26
|
+
asHTML(indent, context) {
|
|
27
|
+
indent = this.adjustIndent(indent);
|
|
28
|
+
|
|
29
|
+
const childNodesHTML = this.childNodesAsHTML(indent, context),
|
|
30
|
+
startingTag = this.startingTag(context),
|
|
31
|
+
closingTag = this.closingTag(context),
|
|
32
|
+
html = `${indent}${startingTag}${childNodesHTML}${closingTag}
|
|
33
|
+
`;
|
|
34
|
+
|
|
35
|
+
return html;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
createDOMElement(context) {
|
|
39
|
+
const tagName = this.tagName(context),
|
|
40
|
+
className = this.className(context),
|
|
41
|
+
domElement = document.createElement(tagName);
|
|
42
|
+
|
|
43
|
+
Object.assign(domElement, {
|
|
44
|
+
className
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
this.setDOMElement(domElement);
|
|
48
|
+
|
|
49
|
+
this.createChildNodeDOMElements(context);
|
|
50
|
+
|
|
51
|
+
return domElement;
|
|
52
|
+
}
|
|
53
|
+
|
|
13
54
|
childNodesAsHTML(indent, context) {
|
|
14
55
|
const content = this.content(context),
|
|
15
56
|
childNodesHTML = content; ///
|
|
@@ -25,5 +66,12 @@ export default class PageNumberDirectiveMarkdownNode extends MarkdownNode {
|
|
|
25
66
|
this.addDOMElement(domElement);
|
|
26
67
|
}
|
|
27
68
|
|
|
28
|
-
|
|
69
|
+
clone() { return super.clone(this.number); }
|
|
70
|
+
|
|
71
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
|
|
72
|
+
const pageNumber = null,
|
|
73
|
+
pageNumberDirectiveMarkdownNode = DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(PageNumberDirectiveMarkdownNode, ruleName, childNodes, opacity, pageNumber);
|
|
74
|
+
|
|
75
|
+
return pageNumberDirectiveMarkdownNode;
|
|
76
|
+
}
|
|
29
77
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
|
|
5
|
+
export default class DirectiveMarkdownNode extends MarkdownNode {
|
|
6
|
+
lines(context) {
|
|
7
|
+
const lines = 0;
|
|
8
|
+
|
|
9
|
+
return lines;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity); }
|
|
13
|
+
}
|