highmark-markdown 0.0.443 → 0.0.445
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 +1464 -1440
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/example/importer.js +2 -2
- package/lib/example/view.js +3 -3
- package/lib/node/markdown/anchor.js +13 -1
- package/lib/node/markdown/division.js +52 -42
- package/lib/node/markdown/subDivision.js +1 -12
- package/lib/node/markdown/verticalSpace.js +1 -12
- package/lib/node/markdown.js +8 -1
- package/lib/replacement/{subDivision/indexAnchor.js → indexAnchor.js} +23 -16
- package/lib/utilities/processing.js +23 -13
- package/package.json +1 -1
- package/src/defaultMarkdownStyle.js +3 -0
- package/src/example/importer.js +0 -2
- package/src/example/view.js +3 -2
- package/src/node/markdown/anchor.js +21 -0
- package/src/node/markdown/division.js +73 -59
- package/src/node/markdown/subDivision.js +0 -15
- package/src/node/markdown/verticalSpace.js +0 -15
- package/src/node/markdown.js +6 -0
- package/src/replacement/indexAnchor.js +27 -0
- package/src/utilities/processing.js +26 -16
- package/src/replacement/subDivision/indexAnchor.js +0 -20
|
@@ -5,19 +5,19 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
import MarkdownNode from "../../node/markdown";
|
|
6
6
|
import IndexReplacement from "../../replacement/index";
|
|
7
7
|
import FootnoteReplacement from "../../replacement/footnote";
|
|
8
|
+
import IndexAnchorReplacement from "../../replacement/indexAnchor";
|
|
8
9
|
import ContentsListReplacement from "../../replacement/contentsList";
|
|
9
10
|
import FootnotesListReplacement from "../../replacement/footnotesList";
|
|
10
11
|
import FootnoteSubDivisionReplacement from "../../replacement/subDivision/footnote";
|
|
11
|
-
import IndexAnchorSubDivisionReplacement from "../../replacement/subDivision/indexAnchor";
|
|
12
12
|
import IndexDirectiveSubDivisionReplacement from "../../replacement/subDivision/indexDirective";
|
|
13
13
|
import ContentsDirectiveSubDivisionReplacement from "../../replacement/subDivision/contentsDirective";
|
|
14
14
|
import FootnotesDirectiveSubDivisionReplacement from "../../replacement/subDivision/footnotesDirective";
|
|
15
15
|
import PageNumberDirectiveSubDivisionReplacement from "../../replacement/subDivision/pageNumberDirective";
|
|
16
16
|
|
|
17
17
|
import { EMPTY_STRING } from "../../constants";
|
|
18
|
-
import { DIVISION_RULE_NAME } from "../../ruleNames";
|
|
19
18
|
import { renumberFootnoteLinkMarkdownNodes } from "../../utilities/footnotes";
|
|
20
19
|
import { subDivisionMarkdownNodesFromNode, ignoreDirectiveMarkdownNodeFromNode, pageNumberDirectiveMarkdownNodeFromNode } from "../../utilities/query";
|
|
20
|
+
import {DIVISION_RULE_NAME} from "../../ruleNames";
|
|
21
21
|
|
|
22
22
|
const { clear, filter } = arrayUtilities;
|
|
23
23
|
|
|
@@ -50,52 +50,10 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
50
50
|
return ignored;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
pageNumberDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(PageNumberDirectiveSubDivisionReplacement, context),
|
|
56
|
-
subDivisionReplacements = [
|
|
57
|
-
footnotesDirectiveSubDivisionReplacement,
|
|
58
|
-
pageNumberDirectiveSubDivisionReplacement
|
|
59
|
-
];
|
|
60
|
-
|
|
61
|
-
filter(subDivisionReplacements, (subDivisionReplacement) => {
|
|
62
|
-
if (subDivisionReplacement !== null) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
const { linesPerPage } = context,
|
|
68
|
-
paginatedChildNodes = [],
|
|
69
|
-
childNodes = this.getChildNodes();
|
|
70
|
-
|
|
71
|
-
let totalLines = 0;
|
|
72
|
-
|
|
73
|
-
childNodes.forEach((childNode) => {
|
|
74
|
-
const lines = childNode.lines(context),
|
|
75
|
-
paginatedChildNode = childNode; ///
|
|
76
|
-
|
|
77
|
-
totalLines += lines;
|
|
53
|
+
isDivisionMarkdownNode() {
|
|
54
|
+
const divisionMarkdownNode = true;
|
|
78
55
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (totalLines > linesPerPage) {
|
|
82
|
-
const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
|
|
83
|
-
paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
|
|
84
|
-
|
|
85
|
-
paginatedDivisionMarkdownNodes.push(paginatedDivisionMarkdownNode);
|
|
86
|
-
|
|
87
|
-
clear(paginatedChildNodes);
|
|
88
|
-
|
|
89
|
-
totalLines = 0;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
if (totalLines > 0) {
|
|
94
|
-
const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, context),
|
|
95
|
-
paginatedDivisionMarkdownNode = divisionMarkdownNode; ///
|
|
96
|
-
|
|
97
|
-
paginatedDivisionMarkdownNodes.push(paginatedDivisionMarkdownNode);
|
|
98
|
-
}
|
|
56
|
+
return divisionMarkdownNode;
|
|
99
57
|
}
|
|
100
58
|
|
|
101
59
|
getPageNumber() {
|
|
@@ -132,6 +90,51 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
132
90
|
});
|
|
133
91
|
}
|
|
134
92
|
|
|
93
|
+
paginate(markdownNodes, context) {
|
|
94
|
+
const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context),
|
|
95
|
+
pageNumberDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(PageNumberDirectiveSubDivisionReplacement, context),
|
|
96
|
+
subDivisionReplacements = [
|
|
97
|
+
footnotesDirectiveSubDivisionReplacement,
|
|
98
|
+
pageNumberDirectiveSubDivisionReplacement
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
filter(subDivisionReplacements, (subDivisionReplacement) => {
|
|
102
|
+
if (subDivisionReplacement !== null) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
const { linesPerPage } = context,
|
|
108
|
+
paginatedChildNodes = [],
|
|
109
|
+
childNodes = this.getChildNodes();
|
|
110
|
+
|
|
111
|
+
let totalLines = 0,
|
|
112
|
+
pageNumber = 1;
|
|
113
|
+
|
|
114
|
+
childNodes.forEach((childNode) => {
|
|
115
|
+
const lines = childNode.lines(context),
|
|
116
|
+
paginatedChildNode = childNode; ///
|
|
117
|
+
|
|
118
|
+
paginatedChildNodes.push(paginatedChildNode);
|
|
119
|
+
|
|
120
|
+
totalLines += lines;
|
|
121
|
+
|
|
122
|
+
if (totalLines > linesPerPage) {
|
|
123
|
+
paginateDivisionMarkdownNode(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, markdownNodes, pageNumber, context)
|
|
124
|
+
|
|
125
|
+
clear(paginatedChildNodes);
|
|
126
|
+
|
|
127
|
+
totalLines = 0;
|
|
128
|
+
|
|
129
|
+
pageNumber++;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
if (totalLines > 0) {
|
|
134
|
+
paginateDivisionMarkdownNode(paginatedChildNodes, subDivisionReplacements, this.divisionClassName, markdownNodes, pageNumber, context);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
135
138
|
createIndex(divisionMarkdownNodes, context) {
|
|
136
139
|
let indexCreated = false;
|
|
137
140
|
|
|
@@ -164,16 +167,6 @@ export default class DivisionMarkdownNode extends MarkdownNode {
|
|
|
164
167
|
contentsListReplacement.replaceContentsDirectiveSubdivisionReplacement(contentsDirectiveSubDivisionReplacement, divisionMarkdownNode, context);
|
|
165
168
|
|
|
166
169
|
contentsCreated = true;
|
|
167
|
-
|
|
168
|
-
divisionMarkdownNodes.forEach((divisionMarkdownNode) => {
|
|
169
|
-
const pageNumber = divisionMarkdownNode.getPageNumber();
|
|
170
|
-
|
|
171
|
-
if (pageNumber !== null) {
|
|
172
|
-
const indexAnchorSubDivisionReplacement = IndexAnchorSubDivisionReplacement.fromPageNumber(pageNumber, context);
|
|
173
|
-
|
|
174
|
-
indexAnchorSubDivisionReplacement.prependToDivisionMarkdownNode(divisionMarkdownNode, context);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
170
|
}
|
|
178
171
|
}
|
|
179
172
|
|
|
@@ -331,13 +324,13 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
331
324
|
return divisionMarkdownNode;
|
|
332
325
|
}
|
|
333
326
|
|
|
334
|
-
static
|
|
327
|
+
static fromPaginatedChildNodesAndSubDivisionReplacements(paginatedChildNodes, subDivisionReplacements, context) {
|
|
335
328
|
const ruleName = DIVISION_RULE_NAME,
|
|
336
329
|
childNodes = [
|
|
337
330
|
...paginatedChildNodes
|
|
338
331
|
],
|
|
339
332
|
opacity = null,
|
|
340
|
-
divisionMarkdownNode =
|
|
333
|
+
divisionMarkdownNode = DivisionMarkdownNode.fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity);
|
|
341
334
|
|
|
342
335
|
subDivisionReplacements.forEach((subDivisionReplacement) => {
|
|
343
336
|
subDivisionReplacement = subDivisionReplacement.clone(); ///
|
|
@@ -348,3 +341,24 @@ ${childNodesHTML}${indent}${closingTag}
|
|
|
348
341
|
return divisionMarkdownNode;
|
|
349
342
|
}
|
|
350
343
|
}
|
|
344
|
+
|
|
345
|
+
function paginateDivisionMarkdownNode(paginatedChildNodes, subDivisionReplacements, divisionClassName, markdownNodes, pageNumber, context) {
|
|
346
|
+
let markdownNode;
|
|
347
|
+
|
|
348
|
+
const indexAnchorReplacement = IndexAnchorReplacement.fromPageNumber(pageNumber, context),
|
|
349
|
+
anchorMarkdownNode = indexAnchorReplacement.getAnchorMarkdownNode();
|
|
350
|
+
|
|
351
|
+
markdownNode = anchorMarkdownNode; ///
|
|
352
|
+
|
|
353
|
+
markdownNodes.push(markdownNode);
|
|
354
|
+
|
|
355
|
+
const divisionMarkdownNode = DivisionMarkdownNode.fromPaginatedChildNodesAndSubDivisionReplacements(paginatedChildNodes, subDivisionReplacements, context);
|
|
356
|
+
|
|
357
|
+
divisionMarkdownNode.setDivisionClassName(divisionClassName);
|
|
358
|
+
|
|
359
|
+
divisionMarkdownNode.setPageNumber(pageNumber);
|
|
360
|
+
|
|
361
|
+
markdownNode = divisionMarkdownNode; ///
|
|
362
|
+
|
|
363
|
+
markdownNodes.push(markdownNode);
|
|
364
|
+
}
|
|
@@ -7,8 +7,6 @@ import VerticalSpaceMarkdownNode from "../../node/markdown/verticalSpace";
|
|
|
7
7
|
import EmbedDirectivesSubDivisionReplacement from "../../replacement/subDivision/embedDirectives";
|
|
8
8
|
import IncludeDirectivesSubDivisionReplacement from "../../replacement/subDivision/includeDirectives";
|
|
9
9
|
|
|
10
|
-
import { SUB_DIVISION_RULE_NAME } from "../../ruleNames";
|
|
11
|
-
|
|
12
10
|
const { second } = arrayUtilities;
|
|
13
11
|
|
|
14
12
|
export default class SubDivisionMarkdownNode extends MarkdownNode {
|
|
@@ -79,18 +77,5 @@ export default class SubDivisionMarkdownNode extends MarkdownNode {
|
|
|
79
77
|
return secondMarkdownNode;
|
|
80
78
|
}
|
|
81
79
|
|
|
82
|
-
static fromAnchorMarkdownNode(anchorMarkdownNode) {
|
|
83
|
-
const ruleName = SUB_DIVISION_RULE_NAME,
|
|
84
|
-
verticalSpaceMarkdownNode = VerticalSpaceMarkdownNode.fromNothing(),
|
|
85
|
-
childNodes = [
|
|
86
|
-
verticalSpaceMarkdownNode,
|
|
87
|
-
anchorMarkdownNode
|
|
88
|
-
],
|
|
89
|
-
opacity = null,
|
|
90
|
-
subDivisionMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(SubDivisionMarkdownNode, ruleName, childNodes, opacity);
|
|
91
|
-
|
|
92
|
-
return subDivisionMarkdownNode;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
80
|
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(SubDivisionMarkdownNode, ruleName, childNodes, opacity); }
|
|
96
81
|
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { EpsilonNode } from "occam-parsers";
|
|
4
|
-
|
|
5
3
|
import MarkdownNode from "../../node/markdown";
|
|
6
4
|
|
|
7
5
|
import { CARRIAGE_RETURN } from "../../constants";
|
|
8
|
-
import { VERTICAL_SPACE_RULE_NAME } from "../../ruleNames";
|
|
9
6
|
|
|
10
7
|
export default class VerticalSpaceMarkdownNode extends MarkdownNode {
|
|
11
8
|
asHTML(indent, context) {
|
|
@@ -24,17 +21,5 @@ export default class VerticalSpaceMarkdownNode extends MarkdownNode {
|
|
|
24
21
|
return domElement;
|
|
25
22
|
}
|
|
26
23
|
|
|
27
|
-
static fromNothing() {
|
|
28
|
-
const epsilonNode = EpsilonNode.fromNothing(),
|
|
29
|
-
ruleName = VERTICAL_SPACE_RULE_NAME,
|
|
30
|
-
childNodes = [
|
|
31
|
-
epsilonNode
|
|
32
|
-
],
|
|
33
|
-
opacity = null,
|
|
34
|
-
verticalSpaceMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(VerticalSpaceMarkdownNode, ruleName, childNodes, opacity);
|
|
35
|
-
|
|
36
|
-
return verticalSpaceMarkdownNode;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
24
|
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(VerticalSpaceMarkdownNode, ruleName, childNodes, opacity); }
|
|
40
25
|
}
|
package/src/node/markdown.js
CHANGED
|
@@ -94,6 +94,12 @@ class MarkdownNode extends NonTerminalNode {
|
|
|
94
94
|
return attributeValue;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
isDivisionMarkdownNode() {
|
|
98
|
+
const divisionMarkdownNode = false;
|
|
99
|
+
|
|
100
|
+
return divisionMarkdownNode;
|
|
101
|
+
}
|
|
102
|
+
|
|
97
103
|
isPlainTextMarkdownNode() {
|
|
98
104
|
const plainTextMarkdownNode = false;
|
|
99
105
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Replacement from "../replacement";
|
|
4
|
+
|
|
5
|
+
import AnchorMarkdownNode from "../node/markdown/anchor";
|
|
6
|
+
|
|
7
|
+
import { INDEX_PREPEND } from "../prepends";
|
|
8
|
+
|
|
9
|
+
export default class IndexAnchorReplacement extends Replacement {
|
|
10
|
+
getAnchorMarkdownNode() {
|
|
11
|
+
const node = this.getNode(),
|
|
12
|
+
anchorMarkdownNode = node; ///
|
|
13
|
+
|
|
14
|
+
return anchorMarkdownNode;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static fromPageNumber(pageNumber, context) {
|
|
18
|
+
const prepend = INDEX_PREPEND,
|
|
19
|
+
identifier = pageNumber, ///
|
|
20
|
+
anchorMarkdownNode = AnchorMarkdownNode.fromPrependAndIdentifier(prepend, identifier),
|
|
21
|
+
node = anchorMarkdownNode, ///
|
|
22
|
+
tokens = [],
|
|
23
|
+
indexAnchorReplacement = Replacement.fromNodeAndTokens(IndexAnchorReplacement, node, tokens);
|
|
24
|
+
|
|
25
|
+
return indexAnchorReplacement;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -7,9 +7,10 @@ export function postprocess(divisionMarkdownNode, context) {
|
|
|
7
7
|
|
|
8
8
|
resolveEmbeddings(divisionMarkdownNodes, context);
|
|
9
9
|
|
|
10
|
-
const footnoteReplacementMap = prepareFootnotes(divisionMarkdownNodes, context)
|
|
10
|
+
const footnoteReplacementMap = prepareFootnotes(divisionMarkdownNodes, context),
|
|
11
|
+
markdownNodes = paginate(divisionMarkdownNodes, context);
|
|
11
12
|
|
|
12
|
-
divisionMarkdownNodes =
|
|
13
|
+
divisionMarkdownNodes = divisionMarkdownNodesFromMarkdownNodes(markdownNodes); ///
|
|
13
14
|
|
|
14
15
|
createFootnotes(divisionMarkdownNodes, footnoteReplacementMap, context);
|
|
15
16
|
|
|
@@ -17,25 +18,17 @@ export function postprocess(divisionMarkdownNode, context) {
|
|
|
17
18
|
|
|
18
19
|
createIndex(divisionMarkdownNodes, context);
|
|
19
20
|
|
|
20
|
-
return
|
|
21
|
+
return markdownNodes;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
function paginate(divisionMarkdownNodes, context) {
|
|
24
|
-
const
|
|
25
|
+
const markdownNOdes = [];
|
|
25
26
|
|
|
26
27
|
divisionMarkdownNodes.forEach((divisionMarkdownNode) => {
|
|
27
|
-
divisionMarkdownNode.paginate(
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
paginatedDivisionMarkdownNodes.forEach((paginatedDivisionMarkdownNode, index) => {
|
|
31
|
-
const pageNumber = index + 1;
|
|
32
|
-
|
|
33
|
-
paginatedDivisionMarkdownNode.setPageNumber(pageNumber);
|
|
28
|
+
divisionMarkdownNode.paginate(markdownNOdes, context);
|
|
34
29
|
});
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return divisionMarkdownNodes;
|
|
31
|
+
return markdownNOdes;
|
|
39
32
|
}
|
|
40
33
|
|
|
41
34
|
function createIndex(divisionMarkdownNodes, context) {
|
|
@@ -100,6 +93,23 @@ function resolveEmbeddings(divisionMarkdownNodes, context) {
|
|
|
100
93
|
});
|
|
101
94
|
}
|
|
102
95
|
|
|
96
|
+
export function divisionMarkdownNodesFromMarkdownNodes(markdownNodes) {
|
|
97
|
+
const divisionMarkdownNodes = markdownNodes.reduce((divisionMarkdownNodes, markdownNode) => {
|
|
98
|
+
const markdownNodeDivisionMarkdownNode = markdownNode.isDivisionMarkdownNode();
|
|
99
|
+
|
|
100
|
+
if (markdownNodeDivisionMarkdownNode) {
|
|
101
|
+
const divisionMarkdownNode = markdownNode; ///
|
|
102
|
+
|
|
103
|
+
divisionMarkdownNodes.push(divisionMarkdownNode);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return divisionMarkdownNodes;
|
|
107
|
+
}, []);
|
|
108
|
+
|
|
109
|
+
return divisionMarkdownNodes;
|
|
110
|
+
}
|
|
111
|
+
|
|
103
112
|
export default {
|
|
104
|
-
postprocess
|
|
105
|
-
|
|
113
|
+
postprocess,
|
|
114
|
+
divisionMarkdownNodesFromMarkdownNodes
|
|
115
|
+
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import SubDivisionReplacement from "../../replacement/subDivision";
|
|
4
|
-
|
|
5
|
-
import AnchorMarkdownNode from "../../node/markdown/anchor";
|
|
6
|
-
import SubDivisionMarkdownNode from "../../node/markdown/subDivision";
|
|
7
|
-
|
|
8
|
-
import { INDEX_PREPEND } from "../../prepends";
|
|
9
|
-
|
|
10
|
-
export default class IndexAnchorSubDivisionReplacement extends SubDivisionReplacement {
|
|
11
|
-
static fromPageNumber(pageNumber, context) {
|
|
12
|
-
const prepend = INDEX_PREPEND,
|
|
13
|
-
identifier = pageNumber, ///
|
|
14
|
-
anchorMarkdownNode = AnchorMarkdownNode.fromPrependAndIdentifier(prepend, identifier),
|
|
15
|
-
subDivisionMarkdownNode = SubDivisionMarkdownNode.fromAnchorMarkdownNode(anchorMarkdownNode),
|
|
16
|
-
indexAnchorSubdivisionReplacement = SubDivisionReplacement.fromSubDivisionMarkdownNode(IndexAnchorSubDivisionReplacement, subDivisionMarkdownNode, context);
|
|
17
|
-
|
|
18
|
-
return indexAnchorSubdivisionReplacement;
|
|
19
|
-
}
|
|
20
|
-
}
|