highmark-markdown 1.0.183 → 1.0.185

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 (266) hide show
  1. package/example.js +10243 -6411
  2. package/lib/constants.js +9 -1
  3. package/lib/defaultMarkdownStyle.js +2 -2
  4. package/lib/example/importer.js +3 -3
  5. package/lib/example/indexOptions.js +1 -98
  6. package/lib/example/view/div/container/markdown.js +2 -2
  7. package/lib/example/view/div/container/markdownStyle.js +2 -2
  8. package/lib/example/view/div/container.js +2 -2
  9. package/lib/example/view/div/pageButtons.js +7 -4
  10. package/lib/example/view/div/preview.js +1 -5
  11. package/lib/example/view/div/sizeable/left.js +2 -2
  12. package/lib/example/view/div/tabButtons/right.js +5 -5
  13. package/lib/example/view/textarea/markdown.js +2 -2
  14. package/lib/example/view/textarea/markdownStyle.js +2 -2
  15. package/lib/example/view/textarea/parseTree/html.js +2 -2
  16. package/lib/example/view/textarea/plainText.js +1 -5
  17. package/lib/example/view/xmp.js +1 -5
  18. package/lib/example/view.js +51 -48
  19. package/lib/index/list.js +4 -4
  20. package/lib/index.js +2 -2
  21. package/lib/map/node/html.js +13 -7
  22. package/lib/map/node/markdown.js +5 -24
  23. package/lib/markdown/bnf.js +2 -2
  24. package/lib/node/html/anchor.js +49 -64
  25. package/lib/node/html/blockLine.js +23 -4
  26. package/lib/node/{markdown/paragraph.js → html/directive/contents.js} +20 -14
  27. package/lib/node/{markdown/strongText.js → html/directive/footnotes.js} +20 -14
  28. package/lib/node/{markdown/emphasisedText.js → html/directive/index.js} +20 -14
  29. package/lib/node/{markdown/inlineText.js → html/directive/pageNumber.js} +20 -14
  30. package/lib/node/html/division.js +118 -7
  31. package/lib/node/html/footnote.js +4 -10
  32. package/lib/node/html/heading/index.js +71 -10
  33. package/lib/node/html/heading/primary.js +8 -7
  34. package/lib/node/html/heading/quaternary.js +8 -7
  35. package/lib/node/html/heading/secondary.js +8 -7
  36. package/lib/node/html/heading/tertiary.js +8 -7
  37. package/lib/node/html/heading.js +165 -0
  38. package/lib/node/html/image.js +7 -6
  39. package/lib/node/html/item/contents.js +22 -8
  40. package/lib/node/html/item/footnote.js +144 -0
  41. package/lib/node/html/item/index.js +27 -43
  42. package/lib/node/html/line.js +55 -2
  43. package/lib/node/html/link/contents.js +34 -14
  44. package/lib/node/html/link/email.js +32 -8
  45. package/lib/node/html/link/footnote.js +95 -5
  46. package/lib/node/html/link/hyper.js +32 -8
  47. package/lib/node/html/link/index.js +66 -35
  48. package/lib/node/html/list/contents.js +22 -8
  49. package/lib/node/html/list/footnotes.js +39 -12
  50. package/lib/node/html/list/index.js +22 -8
  51. package/lib/node/html/pageNumber.js +70 -23
  52. package/lib/node/html/{item/footnotes.js → reference.js} +14 -14
  53. package/lib/node/{markdown/heading/primary.js → html/text/comma.js} +38 -28
  54. package/lib/node/html/text/index.js +146 -0
  55. package/lib/node/html/text/stronglyEmphasised.js +15 -8
  56. package/lib/node/html/text.js +43 -5
  57. package/lib/node/html/topmost.js +67 -1
  58. package/lib/node/html.js +77 -4
  59. package/lib/node/markdown/directive/{embee.js → embed.js} +1 -1
  60. package/lib/node/markdown/division.js +13 -22
  61. package/lib/node/markdown/link/footnote.js +5 -102
  62. package/lib/node/markdown/subDivision.js +2 -2
  63. package/lib/node/markdown/text/block.js +1 -1
  64. package/lib/node/markdown/text.js +25 -29
  65. package/lib/ruleNames.js +87 -81
  66. package/lib/style/selector.js +4 -4
  67. package/lib/{node/markdown/heading/tertiary.js → transform/html/directive/contents.js} +23 -28
  68. package/lib/{node/markdown/stronglyEmphasisedText.js → transform/html/directive/footnotes.js} +15 -14
  69. package/lib/{node/markdown/line.js → transform/html/directive/index.js} +19 -18
  70. package/lib/transform/html/directive/pageNumber.js +108 -0
  71. package/lib/transform/html/division.js +130 -0
  72. package/lib/transform/html/footnote.js +159 -0
  73. package/lib/transform/html/heading/index.js +109 -0
  74. package/lib/transform/html/index.js +159 -0
  75. package/lib/transform/{indexAnchor.js → html/indexAnchor.js} +20 -20
  76. package/lib/transform/html/item/contents.js +130 -0
  77. package/lib/transform/html/item/footnote.js +117 -0
  78. package/lib/transform/html/item/index.js +117 -0
  79. package/lib/transform/html/line.js +123 -0
  80. package/lib/transform/html/link/contents.js +130 -0
  81. package/lib/transform/html/link/footnote.js +158 -0
  82. package/lib/transform/html/link/nestedFootnote.js +108 -0
  83. package/lib/transform/html/list/contents.js +180 -0
  84. package/lib/transform/html/list/footnotes.js +117 -0
  85. package/lib/transform/html/list/index.js +118 -0
  86. package/lib/transform/html/pageNumber.js +117 -0
  87. package/lib/transform/html.js +168 -0
  88. package/lib/transform/markdown/directive/embed.js +14 -9
  89. package/lib/transform/markdown/directive/ignore.js +12 -38
  90. package/lib/transform/markdown/directive/include.js +11 -6
  91. package/lib/transform/markdown/subDivision.js +18 -50
  92. package/lib/transform/markdown.js +148 -0
  93. package/lib/utilities/contents.js +16 -16
  94. package/lib/utilities/division.js +247 -0
  95. package/lib/utilities/footnotes.js +8 -8
  96. package/lib/utilities/html.js +37 -79
  97. package/lib/utilities/index.js +23 -16
  98. package/lib/utilities/markdown.js +2 -10
  99. package/lib/utilities/string.js +16 -10
  100. package/lib/utilities/whitespace.js +33 -0
  101. package/package.json +6 -6
  102. package/src/constants.js +2 -0
  103. package/src/defaultMarkdownStyle.js +6 -9
  104. package/src/example/importer.js +11 -5
  105. package/src/example/indexOptions.js +0 -97
  106. package/src/example/view/div/container/markdown.js +1 -1
  107. package/src/example/view/div/container/markdownStyle.js +1 -1
  108. package/src/example/view/div/container.js +1 -1
  109. package/src/example/view/div/pageButtons.js +8 -2
  110. package/src/example/view/div/preview.js +0 -6
  111. package/src/example/view/div/sizeable/left.js +1 -1
  112. package/src/example/view/div/tabButtons/right.js +3 -3
  113. package/src/example/view/textarea/markdown.js +1 -0
  114. package/src/example/view/textarea/markdownStyle.js +1 -0
  115. package/src/example/view/textarea/parseTree/html.js +1 -1
  116. package/src/example/view/textarea/plainText.js +0 -6
  117. package/src/example/view/xmp.js +0 -6
  118. package/src/example/view.js +75 -74
  119. package/src/index/list.js +3 -3
  120. package/src/index.js +1 -1
  121. package/src/map/node/html.js +29 -11
  122. package/src/map/node/markdown.js +8 -65
  123. package/src/markdown/bnf.js +112 -149
  124. package/src/node/html/anchor.js +34 -43
  125. package/src/node/html/blockLine.js +33 -4
  126. package/src/node/html/directive/contents.js +9 -0
  127. package/src/node/html/directive/footnotes.js +9 -0
  128. package/src/node/html/directive/index.js +9 -0
  129. package/src/node/html/directive/pageNumber.js +9 -0
  130. package/src/node/html/division.js +154 -4
  131. package/src/node/html/footnote.js +1 -7
  132. package/src/node/html/heading/index.js +78 -2
  133. package/src/node/html/heading/primary.js +6 -4
  134. package/src/node/html/heading/quaternary.js +6 -4
  135. package/src/node/html/heading/secondary.js +6 -4
  136. package/src/node/html/heading/tertiary.js +6 -4
  137. package/src/node/html/heading.js +59 -0
  138. package/src/node/html/image.js +8 -5
  139. package/src/node/html/item/contents.js +25 -2
  140. package/src/node/html/item/footnote.js +39 -0
  141. package/src/node/html/item/index.js +35 -16
  142. package/src/node/html/line.js +41 -2
  143. package/src/node/html/link/contents.js +32 -5
  144. package/src/node/html/link/email.js +51 -17
  145. package/src/node/html/link/footnote.js +98 -2
  146. package/src/node/html/link/hyper.js +51 -17
  147. package/src/node/html/link/index.js +63 -30
  148. package/src/node/html/list/contents.js +25 -2
  149. package/src/node/html/list/footnotes.js +34 -2
  150. package/src/node/html/list/index.js +25 -2
  151. package/src/node/html/pageNumber.js +60 -16
  152. package/src/node/html/reference.js +13 -0
  153. package/src/node/html/text/comma.js +29 -0
  154. package/src/node/html/text/index.js +43 -0
  155. package/src/node/html/text/stronglyEmphasised.js +22 -11
  156. package/src/node/html/text.js +3 -3
  157. package/src/node/html/topmost.js +93 -1
  158. package/src/node/html.js +34 -6
  159. package/src/node/markdown/division.js +11 -227
  160. package/src/node/markdown/link/footnote.js +6 -82
  161. package/src/node/markdown/subDivision.js +1 -1
  162. package/src/node/markdown/text/block.js +1 -1
  163. package/src/node/markdown/text.js +38 -39
  164. package/src/ruleNames.js +11 -8
  165. package/src/style/selector.js +3 -4
  166. package/src/transform/html/directive/contents.js +19 -0
  167. package/src/transform/html/directive/footnotes.js +12 -0
  168. package/src/transform/html/directive/index.js +19 -0
  169. package/src/transform/html/directive/pageNumber.js +12 -0
  170. package/src/transform/html/division.js +33 -0
  171. package/src/transform/html/footnote.js +66 -0
  172. package/src/transform/html/heading/index.js +14 -0
  173. package/src/transform/html/index.js +77 -0
  174. package/src/transform/html/indexAnchor.js +24 -0
  175. package/src/transform/html/item/contents.js +48 -0
  176. package/src/transform/html/item/footnote.js +21 -0
  177. package/src/transform/html/item/index.js +21 -0
  178. package/src/transform/html/line.js +27 -0
  179. package/src/transform/html/link/contents.js +40 -0
  180. package/src/transform/html/link/footnote.js +58 -0
  181. package/src/transform/html/link/nestedFootnote.js +12 -0
  182. package/src/transform/html/list/contents.js +86 -0
  183. package/src/transform/html/list/footnotes.js +20 -0
  184. package/src/transform/html/list/index.js +27 -0
  185. package/src/transform/html/pageNumber.js +20 -0
  186. package/src/transform/html.js +78 -0
  187. package/src/transform/markdown/directive/embed.js +6 -7
  188. package/src/transform/markdown/directive/ignore.js +3 -9
  189. package/src/transform/markdown/directive/include.js +3 -3
  190. package/src/transform/markdown/subDivision.js +5 -17
  191. package/src/transform/markdown.js +9 -0
  192. package/src/utilities/contents.js +12 -12
  193. package/src/utilities/division.js +256 -0
  194. package/src/utilities/footnotes.js +5 -5
  195. package/src/utilities/html.js +39 -86
  196. package/src/utilities/index.js +26 -16
  197. package/src/utilities/markdown.js +0 -8
  198. package/src/utilities/string.js +5 -3
  199. package/src/utilities/whitespace.js +21 -0
  200. package/lib/node/markdown/anchor.js +0 -171
  201. package/lib/node/markdown/contentsItem.js +0 -112
  202. package/lib/node/markdown/directive/pageNumber.js +0 -163
  203. package/lib/node/markdown/heading/quaternary.js +0 -121
  204. package/lib/node/markdown/heading/secondary.js +0 -121
  205. package/lib/node/markdown/heading.js +0 -140
  206. package/lib/node/markdown/item/footnotes.js +0 -120
  207. package/lib/node/markdown/link/contents.js +0 -156
  208. package/lib/node/markdown/link/index.js +0 -117
  209. package/lib/node/markdown/list/contents.js +0 -112
  210. package/lib/node/markdown/list/footnotes.js +0 -165
  211. package/lib/node/markdown/list/index.js +0 -112
  212. package/lib/transform/contentsDirective.js +0 -112
  213. package/lib/transform/contentsItem.js +0 -134
  214. package/lib/transform/contentsLink.js +0 -115
  215. package/lib/transform/contentsList.js +0 -193
  216. package/lib/transform/footnote.js +0 -181
  217. package/lib/transform/footnoteIdentifier.js +0 -120
  218. package/lib/transform/footnotesDirective.js +0 -112
  219. package/lib/transform/footnotesItem.js +0 -123
  220. package/lib/transform/footnotesList.js +0 -172
  221. package/lib/transform/index.js +0 -166
  222. package/lib/transform/indexDirective.js +0 -112
  223. package/lib/transform/indexHeading.js +0 -104
  224. package/lib/transform/indexItem.js +0 -113
  225. package/lib/transform/indexList.js +0 -121
  226. package/lib/transform/line.js +0 -111
  227. package/lib/transform/pageNumberDirective.js +0 -112
  228. package/src/node/html/item/footnotes.js +0 -13
  229. package/src/node/markdown/anchor.js +0 -45
  230. package/src/node/markdown/contentsItem.js +0 -21
  231. package/src/node/markdown/directive/pageNumber.js +0 -34
  232. package/src/node/markdown/emphasisedText.js +0 -7
  233. package/src/node/markdown/heading/primary.js +0 -9
  234. package/src/node/markdown/heading/quaternary.js +0 -9
  235. package/src/node/markdown/heading/secondary.js +0 -9
  236. package/src/node/markdown/heading/tertiary.js +0 -9
  237. package/src/node/markdown/heading.js +0 -47
  238. package/src/node/markdown/inlineText.js +0 -7
  239. package/src/node/markdown/item/footnotes.js +0 -39
  240. package/src/node/markdown/line.js +0 -17
  241. package/src/node/markdown/link/contents.js +0 -31
  242. package/src/node/markdown/link/index.js +0 -18
  243. package/src/node/markdown/list/contents.js +0 -21
  244. package/src/node/markdown/list/footnotes.js +0 -45
  245. package/src/node/markdown/list/index.js +0 -21
  246. package/src/node/markdown/paragraph.js +0 -7
  247. package/src/node/markdown/strongText.js +0 -7
  248. package/src/node/markdown/stronglyEmphasisedText.js +0 -7
  249. package/src/transform/contentsDirective.js +0 -18
  250. package/src/transform/contentsItem.js +0 -55
  251. package/src/transform/contentsLink.js +0 -28
  252. package/src/transform/contentsList.js +0 -110
  253. package/src/transform/footnote.js +0 -51
  254. package/src/transform/footnoteIdentifier.js +0 -27
  255. package/src/transform/footnotesDirective.js +0 -18
  256. package/src/transform/footnotesItem.js +0 -25
  257. package/src/transform/footnotesList.js +0 -77
  258. package/src/transform/index.js +0 -90
  259. package/src/transform/indexAnchor.js +0 -27
  260. package/src/transform/indexDirective.js +0 -18
  261. package/src/transform/indexHeading.js +0 -18
  262. package/src/transform/indexItem.js +0 -29
  263. package/src/transform/indexList.js +0 -33
  264. package/src/transform/line.js +0 -19
  265. package/src/transform/pageNumberDirective.js +0 -18
  266. /package/src/node/markdown/directive/{embee.js → embed.js} +0 -0
@@ -2,45 +2,89 @@
2
2
 
3
3
  import HTMLNode from "../../node/html";
4
4
 
5
+ import { EMPTY_STRING } from "../../constants";
6
+ import { PAGE_NUMBER_RULE_NAME } from "../../ruleNames";
7
+
5
8
  export default class PageNumberHTMLNode extends HTMLNode {
6
- getPageNumber() { return this.outerNode.getPageNumber(); }
9
+ constructor(outerNode, parentNode, childNodes, domElement, pageNumber) {
10
+ super(outerNode, parentNode, childNodes, domElement);
11
+
12
+ this.pageNumber = pageNumber;
13
+ }
14
+
15
+ getPageNumber() {
16
+ return this.pageNumber;
17
+ }
18
+
19
+ getRuleName() {
20
+ const ruleName = PAGE_NUMBER_RULE_NAME;
21
+
22
+ return ruleName;
23
+ }
24
+
25
+ mount(parentDOMElement, siblingDOMElement, context) {
26
+ super.mount(parentDOMElement, siblingDOMElement, context);
7
27
 
8
- createDOMElement(context) {
9
28
  let domElement;
10
29
 
11
- const pageNumber = this.getPageNumber(),
12
- content = pageNumber, ///
30
+ domElement = this.getDOMElement();
31
+
32
+ parentDOMElement = domElement; ///
33
+
34
+ siblingDOMElement = null;
35
+
36
+ const content = this.pageNumber, ///
13
37
  textNode = document.createTextNode(content);
14
38
 
15
- domElement = super.createDOMElement(context)
39
+ domElement = textNode; ///
40
+
41
+ parentDOMElement.insertBefore(domElement, siblingDOMElement);
42
+ }
16
43
 
17
- const parentDOMElement = domElement; ///
44
+ unmount(parentDOMElement, context) {
45
+ {
46
+ let domElement;
18
47
 
19
- domElement = textNode; ///
48
+ domElement = this.getDOMElement();
20
49
 
21
- parentDOMElement.appendChild(domElement);
50
+ const parentDOMElement = domElement, ///
51
+ lastChild = domElement.lastChild
22
52
 
23
- domElement = parentDOMElement; ///
53
+ domElement = lastChild; ///
24
54
 
25
- return domElement;
55
+ parentDOMElement.removeChild(domElement);
56
+ }
57
+
58
+ super.unmount(parentDOMElement, context);
26
59
  }
27
60
 
28
61
  asPlainText(context) {
29
- const pageNumber = this.getPageNumber(),
30
- plainText = pageNumber; ///
62
+ const plainText = EMPTY_STRING;
31
63
 
32
64
  return plainText;
33
65
  }
34
66
 
35
67
  childNodesAsHTML(indent, context) {
36
- const pageNumber = this.getPageNumber(),
37
- childNodesHTML = `${pageNumber}
68
+ const childNodesHTML = `${this.pageNumber}
38
69
  `;
39
70
 
40
71
  return childNodesHTML;
41
72
  }
42
73
 
43
- static fromNothing() { return HTMLNode.fromNothing(PageNumberHTMLNode); }
74
+ asString() {
75
+ const ruleName = this.getRuleName(),
76
+ string = ruleName; ///
77
+
78
+ return string;
79
+ }
80
+
81
+ static tagName = "span";
82
+
83
+ static className = "page-number";
44
84
 
45
- static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(PageNumberHTMLNode, outerNode); }
85
+ static fromPageNumber(pageNumber) {
86
+ const pageNumberHTMLNode = HTMLNode.fromNothing(PageNumberHTMLNode, pageNumber);
87
+
88
+ return pageNumberHTMLNode;
89
+ }
46
90
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class ReferenceHTMLNode extends HTMLNode {
6
+ static tagName = "a";
7
+
8
+ static className = "reference";
9
+
10
+ static fromNothing() { return HTMLNode.fromNothing(ReferenceHTMLNode); }
11
+
12
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ReferenceHTMLNode, outerNode); }
13
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ import TextHTMLNode from "../../../node/html/text";
4
+
5
+ import { COMMA } from "../../../constants";
6
+ import { INDEX_TEXT_RULE_NAME } from "../../../ruleNames";
7
+
8
+ export default class CommaTextHTMLNode extends TextHTMLNode {
9
+ getRuleName() {
10
+ const ruleName = INDEX_TEXT_RULE_NAME;
11
+
12
+ return ruleName;
13
+ }
14
+
15
+ text(context) {
16
+ const text = COMMA;
17
+
18
+ return text;
19
+ }
20
+
21
+ asString() {
22
+ const ruleName = this.getRuleName(),
23
+ string = ruleName; //.
24
+
25
+ return string;
26
+ }
27
+
28
+ static fromNothing() { return TextHTMLNode.fromNothing(CommaTextHTMLNode); }
29
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ import TextHTMLNode from "../../../node/html/text";
4
+
5
+ import { INDEX_TEXT_RULE_NAME } from "../../../ruleNames";
6
+
7
+ export default class IndexTextHTMLNode extends TextHTMLNode {
8
+ constructor(outerNode, parentNode, childNodes, domElement, wordOrPhrase) {
9
+ super(outerNode, parentNode, childNodes, domElement, wordOrPhrase);
10
+
11
+ this.wordOrPhrase = wordOrPhrase;
12
+ }
13
+
14
+ getWordOrPhrase() {
15
+ return this.wordOrPhrase;
16
+ }
17
+
18
+ getRuleName() {
19
+ const ruleName = INDEX_TEXT_RULE_NAME;
20
+
21
+ return ruleName;
22
+ }
23
+
24
+ text(context) {
25
+ const text = `${this.wordOrPhrase}
26
+ `;
27
+
28
+ return text;
29
+ }
30
+
31
+ asString() {
32
+ const ruleName = this.getRuleName(),
33
+ string = ruleName; //.
34
+
35
+ return string;
36
+ }
37
+
38
+ static fromWordOrPhrase(wordOrPhrase) {
39
+ const indexTextHTMLNode = TextHTMLNode.fromNothing(IndexTextHTMLNode, wordOrPhrase);
40
+
41
+ return indexTextHTMLNode;
42
+ }
43
+ }
@@ -29,33 +29,44 @@ export default class StronglyEmphasisedTextHTMLNode extends HTMLNode {
29
29
  }
30
30
 
31
31
  mount(parentDOMElement, siblingDOMElement, context) {
32
- this.domElement = this.createDOMElement(context);
32
+ let domElement;
33
+
34
+ domElement = this.createDOMElement(context);
33
35
 
34
- parentDOMElement.insertBefore(this.domElement, siblingDOMElement);
36
+ this.setDOMElement(domElement);
35
37
 
36
- const childDOMElement = this.createChildDOMElement(context),
37
- domElement = childDOMElement; ///
38
+ parentDOMElement.insertBefore(domElement, siblingDOMElement);
38
39
 
39
- parentDOMElement = this.domElement;
40
+ parentDOMElement = domElement; ///
40
41
 
41
42
  siblingDOMElement = null;
42
43
 
43
- parentDOMElement.insertBefore(domElement, siblingDOMElement);
44
+ const childDOMElement = this.createChildDOMElement(context);
45
+
46
+ domElement = childDOMElement; ///
44
47
 
48
+ parentDOMElement.insertBefore(domElement, siblingDOMElement);
45
49
  }
46
50
 
47
51
  unmount(parentDOMElement, context) {
52
+ let domElement;
53
+
54
+ domElement = this.getDOMElement();
55
+
48
56
  {
49
- const parentDOMElement = this.domElement,
50
- firstChild = parentDOMElement.firstChild,
51
- domElement = firstChild; ///
57
+ const parentDOMElement = domElement, ///
58
+ firstChild = parentDOMElement.firstChild;
59
+
60
+ domElement = firstChild; ///
52
61
 
53
62
  parentDOMElement.removeChild(domElement)
54
63
  }
55
64
 
56
- parentDOMElement.removeChild(this.domElement);
65
+ domElement = this.getDOMElement();
66
+
67
+ parentDOMElement.removeChild(domElement);
57
68
 
58
- this.domElement = null;
69
+ this.resetDOMElement();
59
70
  }
60
71
 
61
72
  childNodesAsHTML(indent, context) {
@@ -3,7 +3,7 @@
3
3
  import HTMLNode from "../../node/html";
4
4
 
5
5
  export default class TextHTMLNode extends HTMLNode {
6
- text(content) { return this.outerNode.text(content); }
6
+ text(context) { return this.outerNode.text(context); }
7
7
 
8
8
  createDOMElement(context) {
9
9
  const text = this.text(context),
@@ -28,7 +28,7 @@ export default class TextHTMLNode extends HTMLNode {
28
28
  return plainText;
29
29
  }
30
30
 
31
- static fromNothing(Class) { return HTMLNode.fromNothing(Class); }
31
+ static fromNothing(Class, ...remainingArguments) { return HTMLNode.fromNothing(Class, ...remainingArguments); }
32
32
 
33
- static fromOuterNode(Class, outerNode) { return HTMLNode.fromOuterNode(Class, outerNode); }
33
+ static fromOuterNode(Class, outerNode, ...remainingArguments) { return HTMLNode.fromOuterNode(Class, outerNode, ...remainingArguments); }
34
34
  }
@@ -1,11 +1,93 @@
1
1
  "use strict";
2
2
 
3
3
  import HTMLNode from "../../node/html";
4
+ import IndexHTMLTransform from "../../transform/html/index";
5
+ import DivisionHTMLTransform from "../../transform/html/division";
6
+ import ContentsListHTMLTransform from "../../transform/html/list/contents";
7
+ import IndexDirectiveHTMLTransform from "../../transform/html/directive/index";
8
+ import ContentsDirectiveHTMLTransform from "../../transform/html/directive/contents";
4
9
 
5
10
  import { HTML_RULE_NAME } from "../../ruleNames";
6
- import { divisionHTMLNodesFromNode } from "../../utilities/html";
11
+ import { divisionHTMLNodesFromNode, indexDirectiveHTMLNodeFromNode, contentsDirectiveHTMLNodeFromNode } from "../../utilities/html";
7
12
 
8
13
  export default class TopmostHTMLNode extends HTMLNode {
14
+ resolve(context) {
15
+ this.paginate(context);
16
+
17
+ this.addContents(context);
18
+
19
+ this.addIndex(context);
20
+ }
21
+
22
+ paginate(context) {
23
+ let divisionHTMLNodes,
24
+ divisionHTMLTransforms;
25
+
26
+ divisionHTMLNodes = this.getDivisionHTMLNodes();
27
+
28
+ divisionHTMLTransforms = divisionHTMLTransformsFromDivisionHTMLNodes(divisionHTMLNodes);
29
+
30
+ divisionHTMLNodes = [];
31
+
32
+ let pageNumber;
33
+
34
+ pageNumber = 1;
35
+
36
+ Object.assign(context, {
37
+ pageNumber
38
+ });
39
+
40
+ divisionHTMLTransforms.forEach((divisionHTMLTransform) => {
41
+ divisionHTMLTransform.remove();
42
+
43
+ divisionHTMLTransform.resolve(divisionHTMLNodes, context);
44
+ });
45
+
46
+ delete context.pageNumber;
47
+
48
+ divisionHTMLTransforms = divisionHTMLTransformsFromDivisionHTMLNodes(divisionHTMLNodes);
49
+
50
+ const topmostHTMLNode = this; ///
51
+
52
+ divisionHTMLTransforms.forEach((divisionHTMLTransform) => {
53
+ divisionHTMLTransform.appendToTopmostHTMLNode(topmostHTMLNode);
54
+ });
55
+ }
56
+
57
+ addIndex(context) {
58
+ const node = this, ///
59
+ indexDirectiveHTMLNode = indexDirectiveHTMLNodeFromNode(node);
60
+
61
+ if (indexDirectiveHTMLNode === null) {
62
+ return;
63
+ }
64
+
65
+ const divisionHTMLNodes = this.getDivisionHTMLNodes(),
66
+ indexDirectiveHTMLTransform = IndexDirectiveHTMLTransform.fromIndexDirectiveHTMLNode(indexDirectiveHTMLNode),
67
+ indexHTMLTransform = IndexHTMLTransform.fromIndexDirectiveHTMLTransformAndDivisionHTMLNodes(indexDirectiveHTMLTransform, divisionHTMLNodes, context);
68
+
69
+ (indexHTMLTransform !== null) ?
70
+ indexHTMLTransform.replaceIndexDirectiveHTMLTransform(indexDirectiveHTMLTransform) :
71
+ indexDirectiveHTMLTransform.remove();
72
+ }
73
+
74
+ addContents(context) {
75
+ const node = this, ///
76
+ contentsDirectiveHTMLNode = contentsDirectiveHTMLNodeFromNode(node);
77
+
78
+ if (contentsDirectiveHTMLNode === null) {
79
+ return;
80
+ }
81
+
82
+ const topmostHTMLNode = this, ///
83
+ contentsDirectiveHTMLTransform = ContentsDirectiveHTMLTransform.fromContentsDirectiveHTMLNode(contentsDirectiveHTMLNode),
84
+ contentsListHTMLTransform = ContentsListHTMLTransform.fromContentsDirectiveHTMLTransformAndTopmostHTMLNode(contentsDirectiveHTMLTransform, topmostHTMLNode, context);
85
+
86
+ (contentsListHTMLTransform !== null) ?
87
+ contentsListHTMLTransform.replaceContentsDirectiveHTMLTransform(contentsDirectiveHTMLTransform) :
88
+ contentsDirectiveHTMLTransform.remove();
89
+ }
90
+
9
91
  adjustIndent(indent) {
10
92
  return indent;
11
93
  }
@@ -36,3 +118,13 @@ export default class TopmostHTMLNode extends HTMLNode {
36
118
 
37
119
  static fromNothing() { return HTMLNode.fromNothing(TopmostHTMLNode); }
38
120
  }
121
+
122
+ function divisionHTMLTransformsFromDivisionHTMLNodes(divisionHTMLNodes) {
123
+ const divisionHTMLTransforms = divisionHTMLNodes.map((divisionHTMLNode) => {
124
+ const divisionHTMLTransform = DivisionHTMLTransform.fromDivisionHTMLNode(divisionHTMLNode);
125
+
126
+ return divisionHTMLTransform;
127
+ });
128
+
129
+ return divisionHTMLTransforms;
130
+ }
package/src/node/html.js CHANGED
@@ -21,6 +21,10 @@ class HTMLNode extends Node {
21
21
  this.domElement = domElement;
22
22
  }
23
23
 
24
+ resetDOMElement() {
25
+ this.domElement = null;
26
+ }
27
+
24
28
  getMarkdownNode() {
25
29
  const outerNode = this.getOuterNode(),
26
30
  markdownNode = outerNode; ///
@@ -28,7 +32,12 @@ class HTMLNode extends Node {
28
32
  return markdownNode;
29
33
  }
30
34
 
31
- getRuleName() { return this.outerNode.getRuleName(); }
35
+ getRuleName() {
36
+ const markdownNode = this.getMarkdownNode(),
37
+ ruleName = markdownNode.getRuleName();
38
+
39
+ return ruleName;
40
+ }
32
41
 
33
42
  isTerminalNode() {
34
43
  const terminalNode = false;
@@ -74,6 +83,12 @@ class HTMLNode extends Node {
74
83
  return tagName;
75
84
  }
76
85
 
86
+ depth() {
87
+ const { depth = null } = this.constructor;
88
+
89
+ return depth;
90
+ }
91
+
77
92
  className(context) {
78
93
  const { className } = this.constructor;
79
94
 
@@ -248,18 +263,18 @@ ${childNodePlainText}`;
248
263
  return childNodesPlainText;
249
264
  }
250
265
 
251
- static fromNothing(Class) {
266
+ static fromNothing(Class, ...remainingArguments) {
252
267
  if (Class === undefined) {
253
268
  Class = HTMLNode; ///
254
269
  }
255
270
 
256
271
  const domElement = null,
257
- node = Node.fromNothing(Class, domElement);
272
+ node = Node.fromNothing(Class, domElement, ...remainingArguments);
258
273
 
259
274
  return node;
260
275
  }
261
276
 
262
- static fromOuterNode(Class, outerNode) {
277
+ static fromOuterNode(Class, outerNode, ...remainingArguments) {
263
278
  if (outerNode === undefined) {
264
279
  outerNode = Class; ///
265
280
 
@@ -267,7 +282,20 @@ ${childNodePlainText}`;
267
282
  }
268
283
 
269
284
  const domElement = null,
270
- node = Node.fromOuterNode(Class, outerNode, domElement);
285
+ node = Node.fromOuterNode(Class, outerNode, domElement, ...remainingArguments);
286
+
287
+ return node;
288
+ }
289
+
290
+ static fromChildNodes(Class, childNodes, ...remainingArguments) {
291
+ if (childNodes === undefined) {
292
+ childNodes = Class; ///
293
+
294
+ Class = HTMLNode; ///
295
+ }
296
+
297
+ const domElement = null,
298
+ node = Node.fromChildNodes(Class, childNodes, domElement, ...remainingArguments);
271
299
 
272
300
  return node;
273
301
  }
@@ -275,4 +303,4 @@ ${childNodePlainText}`;
275
303
 
276
304
  Object.assign(HTMLNode.prototype, nodeMixins);
277
305
 
278
- export default HTMLNode;
306
+ export default HTMLNode;