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.
@@ -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
- paginate(paginatedDivisionMarkdownNodes, context) {
54
- const footnotesDirectiveSubDivisionReplacement = this.removeSubDivisionMarkdownNode(FootnotesDirectiveSubDivisionReplacement, context),
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
- paginatedChildNodes.push(paginatedChildNode);
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 fromPaginatedChildNodesSubDivisionReplacementsAndDivisionClassName(paginatedChildNodes, subDivisionReplacements, divisionClassName, context) {
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 = MarkdownNode.fromRuleNameChildNodesAndOpacity(DivisionMarkdownNode, ruleName, childNodes, opacity, divisionClassName);
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
  }
@@ -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 = paginate(divisionMarkdownNodes, context);
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 divisionMarkdownNodes;
21
+ return markdownNodes;
21
22
  }
22
23
 
23
24
  function paginate(divisionMarkdownNodes, context) {
24
- const paginatedDivisionMarkdownNodes = [];
25
+ const markdownNOdes = [];
25
26
 
26
27
  divisionMarkdownNodes.forEach((divisionMarkdownNode) => {
27
- divisionMarkdownNode.paginate(paginatedDivisionMarkdownNodes, context);
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
- divisionMarkdownNodes = paginatedDivisionMarkdownNodes; ///
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
- }