highmark-markdown 1.0.173 → 1.0.174

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 (377) hide show
  1. package/README.md +1 -1
  2. package/example.js +14061 -13787
  3. package/lib/example/importer.js +5 -5
  4. package/lib/example/view/div/container/markdown.js +3 -3
  5. package/lib/example/view/div/preview.js +5 -1
  6. package/lib/example/view/textarea/parseTree/{markdown/outer.js → html.js} +17 -17
  7. package/lib/example/view/textarea/parseTree/markdown.js +49 -2
  8. package/lib/example/view/textarea/plainText.js +7 -2
  9. package/lib/example/view/xmp.js +7 -2
  10. package/lib/example/view.js +67 -104
  11. package/lib/index/match.js +6 -6
  12. package/lib/index.js +27 -15
  13. package/lib/map/className.js +60 -0
  14. package/lib/map/node/html.js +85 -0
  15. package/lib/map/node/markdown.js +73 -0
  16. package/lib/map/tagName.js +60 -0
  17. package/lib/markdown/bnf.js +2 -2
  18. package/lib/markdown/parser.js +10 -9
  19. package/lib/markdownStyle/entries.js +3 -3
  20. package/lib/mixins/node.js +24 -23
  21. package/lib/node/html/anchor.js +55 -11
  22. package/lib/node/html/blockLine.js +75 -9
  23. package/lib/node/html/division.js +135 -0
  24. package/lib/node/html/error.js +195 -0
  25. package/lib/node/html/{blockListingEnd.js → footnote.js} +20 -14
  26. package/lib/node/html/heading/index.js +128 -0
  27. package/lib/node/html/heading/primary.js +129 -0
  28. package/lib/node/{markdown/directive.js → html/heading/quaternary.js} +21 -21
  29. package/lib/node/html/heading/secondary.js +129 -0
  30. package/lib/node/html/heading/tertiary.js +129 -0
  31. package/lib/node/html/image.js +214 -0
  32. package/lib/node/html/indexList.js +128 -0
  33. package/lib/node/html/item/contents.js +128 -0
  34. package/lib/node/html/item/footnotes.js +128 -0
  35. package/lib/node/{markdown/indexItem.js → html/item/index.js} +36 -15
  36. package/lib/node/html/item/ordered.js +17 -2
  37. package/lib/node/html/item/unordered.js +128 -0
  38. package/lib/node/html/line.js +174 -0
  39. package/lib/node/html/{contentsLink.js → link/contents.js} +19 -4
  40. package/lib/node/html/link/email.js +229 -0
  41. package/lib/node/html/link/footnote.js +137 -0
  42. package/lib/node/html/link/hyper.js +229 -0
  43. package/lib/node/html/link/index.js +202 -0
  44. package/lib/node/html/list/contents.js +128 -0
  45. package/lib/node/html/list/footnotes.js +144 -0
  46. package/lib/node/html/list/ordered.js +128 -0
  47. package/lib/node/html/list/unordered.js +128 -0
  48. package/lib/node/html/{blockListing.js → listing/block.js} +18 -9
  49. package/lib/node/html/listing/inline.js +189 -0
  50. package/lib/node/html/pageNumber.js +170 -0
  51. package/lib/node/html/{className.js → paragraph.js} +26 -18
  52. package/lib/node/{markdown/nonsense.js → html/table.js} +22 -15
  53. package/lib/node/{markdown/blockListingEnd.js → html/tableBody.js} +22 -15
  54. package/lib/node/html/tableBodyCell.js +128 -0
  55. package/lib/node/html/tableBodyRow.js +128 -0
  56. package/lib/node/html/{blockListingStart.js → tableHead.js} +26 -18
  57. package/lib/node/html/tableHeadCell.js +128 -0
  58. package/lib/node/html/tableHeadRow.js +128 -0
  59. package/lib/node/html/text/block.js +128 -0
  60. package/lib/node/html/text/emphasised.js +128 -0
  61. package/lib/node/html/text/inline.js +196 -0
  62. package/lib/node/html/text/plain.js +128 -0
  63. package/lib/node/html/text/strong.js +128 -0
  64. package/lib/node/html/text/stronglyEmphasised.js +212 -0
  65. package/lib/node/html/text.js +141 -0
  66. package/lib/node/html/topmost.js +57 -10
  67. package/lib/node/html.js +130 -40
  68. package/lib/node/markdown/anchor.js +6 -22
  69. package/lib/node/markdown/{table.js → blockEnd.js} +10 -10
  70. package/lib/node/markdown/blockListing.js +4 -31
  71. package/lib/node/markdown/{blockListingStart.js → blockStart.js} +10 -24
  72. package/lib/node/markdown/className.js +2 -2
  73. package/lib/node/markdown/contentsItem.js +4 -4
  74. package/lib/node/markdown/contentsList.js +2 -10
  75. package/lib/node/markdown/directive/embee.js +13 -13
  76. package/lib/node/markdown/directive/include.js +13 -13
  77. package/lib/node/markdown/directive/pageNumber.js +13 -29
  78. package/lib/node/markdown/division.js +205 -254
  79. package/lib/node/markdown/emailLink.js +36 -98
  80. package/lib/node/markdown/emphasisedText.js +3 -54
  81. package/lib/node/markdown/error.js +9 -53
  82. package/lib/node/markdown/footnote.js +1 -15
  83. package/lib/node/markdown/footnoteLink.js +9 -32
  84. package/lib/node/markdown/footnotesList.js +1 -16
  85. package/lib/node/markdown/heading/primary.js +1 -2
  86. package/lib/node/markdown/heading/quaternary.js +1 -2
  87. package/lib/node/markdown/heading/secondary.js +1 -2
  88. package/lib/node/markdown/heading/tertiary.js +1 -2
  89. package/lib/node/markdown/heading.js +1 -13
  90. package/lib/node/markdown/hyperlink.js +44 -108
  91. package/lib/node/markdown/image.js +2 -63
  92. package/lib/node/markdown/indexLink.js +13 -87
  93. package/lib/node/markdown/indexList.js +2 -10
  94. package/lib/node/markdown/inlineListing.js +22 -56
  95. package/lib/node/markdown/inlineText.js +3 -21
  96. package/lib/node/markdown/item/ordered.js +6 -6
  97. package/lib/node/markdown/line.js +1 -74
  98. package/lib/node/markdown/path.js +7 -7
  99. package/lib/node/markdown/strongText.js +3 -54
  100. package/lib/node/markdown/stronglyEmphasisedText.js +3 -78
  101. package/lib/node/markdown/{tableCellDivider.js → text/block.js} +12 -12
  102. package/lib/node/markdown/{tableBody.js → text/plain.js} +12 -12
  103. package/lib/node/markdown/text.js +154 -0
  104. package/lib/node/markdown/topmost.js +191 -0
  105. package/lib/node/markdown.js +6 -229
  106. package/lib/queries.js +4 -45
  107. package/lib/ruleNames.js +34 -21
  108. package/lib/style/selector.js +11 -7
  109. package/lib/transform/contentsItem.js +134 -0
  110. package/lib/transform/contentsLink.js +115 -0
  111. package/lib/transform/contentsList.js +194 -0
  112. package/lib/{replacement/subDivision.js → transform/division.js} +33 -38
  113. package/lib/{replacement → transform}/embedDirective.js +14 -19
  114. package/lib/{replacement → transform}/footnote.js +18 -23
  115. package/lib/transform/footnotesItem.js +123 -0
  116. package/lib/transform/footnotesList.js +173 -0
  117. package/lib/{replacement → transform}/includeDirective.js +13 -18
  118. package/lib/transform/index.js +166 -0
  119. package/lib/{replacement → transform}/indexAnchor.js +13 -13
  120. package/lib/{replacement → transform}/indexHeading.js +13 -18
  121. package/lib/{replacement → transform}/indexItem.js +13 -18
  122. package/lib/transform/indexList.js +121 -0
  123. package/lib/{replacement → transform}/line.js +13 -18
  124. package/lib/{replacement → transform}/subDivision/contentsDirective.js +14 -14
  125. package/lib/transform/subDivision/embedDirectives.js +147 -0
  126. package/lib/{replacement → transform}/subDivision/footnote.js +14 -14
  127. package/lib/{replacement → transform}/subDivision/footnotesDirective.js +14 -14
  128. package/lib/transform/subDivision/includeDirectives.js +142 -0
  129. package/lib/{replacement → transform}/subDivision/indexDirective.js +14 -14
  130. package/lib/{replacement → transform}/subDivision/pageNumberDirective.js +14 -14
  131. package/lib/utilities/content.js +1 -61
  132. package/lib/utilities/entities.js +17 -0
  133. package/lib/utilities/entries.js +6 -6
  134. package/lib/utilities/html.js +67 -9
  135. package/lib/utilities/markdown.js +45 -0
  136. package/lib/utilities/parser.js +8 -2
  137. package/lib/utilities/query.js +2 -22
  138. package/package.json +2 -2
  139. package/src/example/importer.js +2 -4
  140. package/src/example/view/div/container/markdown.js +2 -2
  141. package/src/example/view/div/preview.js +6 -0
  142. package/src/example/view/textarea/parseTree/html.js +28 -0
  143. package/src/example/view/textarea/parseTree/markdown.js +19 -1
  144. package/src/example/view/textarea/plainText.js +9 -1
  145. package/src/example/view/xmp.js +9 -1
  146. package/src/example/view.js +84 -91
  147. package/src/index/match.js +6 -6
  148. package/src/index.js +6 -3
  149. package/src/map/className.js +16 -0
  150. package/src/map/node/html.js +136 -0
  151. package/src/map/node/markdown.js +125 -0
  152. package/src/map/tagName.js +16 -0
  153. package/src/markdown/bnf.js +85 -64
  154. package/src/markdown/parser.js +3 -1
  155. package/src/markdownStyle/entries.js +3 -3
  156. package/src/mixins/node.js +29 -34
  157. package/src/node/html/anchor.js +26 -5
  158. package/src/node/html/blockLine.js +58 -7
  159. package/src/node/html/division.js +15 -0
  160. package/src/node/html/error.js +64 -0
  161. package/src/node/html/footnote.js +17 -0
  162. package/src/node/html/heading/index.js +13 -0
  163. package/src/node/html/heading/primary.js +15 -0
  164. package/src/node/html/heading/quaternary.js +15 -0
  165. package/src/node/html/heading/secondary.js +15 -0
  166. package/src/node/html/heading/tertiary.js +15 -0
  167. package/src/node/html/image.js +107 -0
  168. package/src/node/html/indexList.js +13 -0
  169. package/src/node/html/item/contents.js +13 -0
  170. package/src/node/html/item/footnotes.js +13 -0
  171. package/src/node/{markdown/indexItem.js → html/item/index.js} +9 -3
  172. package/src/node/html/item/ordered.js +5 -1
  173. package/src/node/html/item/unordered.js +13 -0
  174. package/src/node/html/line.js +64 -0
  175. package/src/node/html/{contentsLink.js → link/contents.js} +7 -3
  176. package/src/node/html/link/email.js +96 -0
  177. package/src/node/html/link/footnote.js +33 -0
  178. package/src/node/html/link/hyper.js +96 -0
  179. package/src/node/html/link/index.js +72 -0
  180. package/src/node/html/list/contents.js +13 -0
  181. package/src/node/html/list/footnotes.js +27 -0
  182. package/src/node/html/list/ordered.js +13 -0
  183. package/src/node/html/list/unordered.js +13 -0
  184. package/src/node/html/{blockListing.js → listing/block.js} +5 -8
  185. package/src/node/html/listing/inline.js +61 -0
  186. package/src/node/html/pageNumber.js +46 -0
  187. package/src/node/html/paragraph.js +13 -0
  188. package/src/node/html/table.js +13 -0
  189. package/src/node/html/tableBody.js +13 -0
  190. package/src/node/html/tableBodyCell.js +13 -0
  191. package/src/node/html/tableBodyRow.js +13 -0
  192. package/src/node/html/tableHead.js +13 -0
  193. package/src/node/html/tableHeadCell.js +13 -0
  194. package/src/node/html/tableHeadRow.js +13 -0
  195. package/src/node/html/text/block.js +13 -0
  196. package/src/node/html/text/emphasised.js +13 -0
  197. package/src/node/html/text/inline.js +57 -0
  198. package/src/node/html/text/plain.js +13 -0
  199. package/src/node/html/text/strong.js +13 -0
  200. package/src/node/html/text/stronglyEmphasised.js +98 -0
  201. package/src/node/html/text.js +34 -0
  202. package/src/node/html/topmost.js +57 -8
  203. package/src/node/html.js +136 -53
  204. package/src/node/markdown/anchor.js +5 -25
  205. package/src/node/markdown/{table.js → blockEnd.js} +2 -2
  206. package/src/node/markdown/blockListing.js +4 -10
  207. package/src/node/markdown/{blockListingStart.js → blockStart.js} +4 -6
  208. package/src/node/markdown/className.js +2 -2
  209. package/src/node/markdown/contentsItem.js +4 -4
  210. package/src/node/markdown/contentsList.js +0 -6
  211. package/src/node/markdown/directive/embee.js +10 -10
  212. package/src/node/markdown/directive/include.js +10 -10
  213. package/src/node/markdown/directive/pageNumber.js +10 -29
  214. package/src/node/markdown/division.js +203 -260
  215. package/src/node/markdown/emailLink.js +41 -87
  216. package/src/node/markdown/emphasisedText.js +1 -40
  217. package/src/node/markdown/error.js +9 -40
  218. package/src/node/markdown/footnote.js +0 -12
  219. package/src/node/markdown/footnoteLink.js +8 -31
  220. package/src/node/markdown/footnotesList.js +0 -13
  221. package/src/node/markdown/heading/primary.js +0 -2
  222. package/src/node/markdown/heading/quaternary.js +0 -2
  223. package/src/node/markdown/heading/secondary.js +0 -2
  224. package/src/node/markdown/heading/tertiary.js +0 -2
  225. package/src/node/markdown/heading.js +0 -14
  226. package/src/node/markdown/hyperlink.js +41 -91
  227. package/src/node/markdown/image.js +1 -82
  228. package/src/node/markdown/indexLink.js +10 -69
  229. package/src/node/markdown/indexList.js +0 -6
  230. package/src/node/markdown/inlineListing.js +20 -40
  231. package/src/node/markdown/inlineText.js +1 -21
  232. package/src/node/markdown/item/ordered.js +3 -3
  233. package/src/node/markdown/line.js +0 -61
  234. package/src/node/markdown/path.js +5 -5
  235. package/src/node/markdown/strongText.js +1 -40
  236. package/src/node/markdown/stronglyEmphasisedText.js +1 -74
  237. package/src/node/markdown/text/block.js +7 -0
  238. package/src/node/markdown/text/plain.js +7 -0
  239. package/src/node/markdown/text.js +80 -0
  240. package/src/node/markdown/topmost.js +91 -0
  241. package/src/node/markdown.js +1 -200
  242. package/src/queries.js +6 -86
  243. package/src/ruleNames.js +16 -12
  244. package/src/style/selector.js +16 -10
  245. package/src/transform/contentsItem.js +55 -0
  246. package/src/{replacement → transform}/contentsLink.js +10 -9
  247. package/src/{replacement → transform}/contentsList.js +26 -26
  248. package/src/transform/division.js +41 -0
  249. package/src/{replacement → transform}/embedDirective.js +4 -4
  250. package/src/{replacement → transform}/footnote.js +7 -7
  251. package/src/transform/footnotesItem.js +25 -0
  252. package/src/transform/footnotesList.js +79 -0
  253. package/src/{replacement → transform}/includeDirective.js +4 -4
  254. package/src/transform/index.js +90 -0
  255. package/src/{replacement → transform}/indexAnchor.js +5 -4
  256. package/src/{replacement → transform}/indexHeading.js +4 -4
  257. package/src/{replacement → transform}/indexItem.js +4 -4
  258. package/src/transform/indexList.js +33 -0
  259. package/src/{replacement → transform}/line.js +4 -4
  260. package/src/transform/subDivision/contentsDirective.js +20 -0
  261. package/src/transform/subDivision/embedDirectives.js +52 -0
  262. package/src/{replacement → transform}/subDivision/footnote.js +5 -5
  263. package/src/transform/subDivision/footnotesDirective.js +20 -0
  264. package/src/transform/subDivision/includeDirectives.js +48 -0
  265. package/src/transform/subDivision/indexDirective.js +20 -0
  266. package/src/transform/subDivision/pageNumberDirective.js +20 -0
  267. package/src/utilities/content.js +0 -95
  268. package/src/utilities/entities.js +11 -0
  269. package/src/utilities/entries.js +3 -3
  270. package/src/utilities/html.js +69 -6
  271. package/src/utilities/markdown.js +32 -0
  272. package/src/utilities/parser.js +3 -2
  273. package/src/utilities/query.js +8 -28
  274. package/lib/classFromOuterNode.js +0 -30
  275. package/lib/elementMap.js +0 -218
  276. package/lib/example/view/textarea/parseTree/markdown/inner.js +0 -179
  277. package/lib/mixins/content.js +0 -21
  278. package/lib/mixins/element.js +0 -32
  279. package/lib/node/html/comma.js +0 -127
  280. package/lib/node/html/directive/pageNumber.js +0 -178
  281. package/lib/node/markdown/blockLine.js +0 -207
  282. package/lib/node/markdown/comma.js +0 -123
  283. package/lib/node/markdown/directive/contents.js +0 -107
  284. package/lib/node/markdown/directive/footnotes.js +0 -107
  285. package/lib/node/markdown/directive/ignore.js +0 -107
  286. package/lib/node/markdown/directive/index.js +0 -107
  287. package/lib/node/markdown/directives.js +0 -125
  288. package/lib/node/markdown/emptyTableCell.js +0 -122
  289. package/lib/node/markdown/endOfLine.js +0 -151
  290. package/lib/node/markdown/indexHeading.js +0 -107
  291. package/lib/node/markdown/item/unordered.js +0 -107
  292. package/lib/node/markdown/item.js +0 -107
  293. package/lib/node/markdown/orderedList.js +0 -107
  294. package/lib/node/markdown/plainText.js +0 -115
  295. package/lib/node/markdown/subDivision.js +0 -161
  296. package/lib/node/markdown/tableBodyCell.js +0 -128
  297. package/lib/node/markdown/tableBodyRow.js +0 -107
  298. package/lib/node/markdown/tableCell.js +0 -118
  299. package/lib/node/markdown/tableDivider.js +0 -107
  300. package/lib/node/markdown/tableHead.js +0 -107
  301. package/lib/node/markdown/tableHeadCell.js +0 -128
  302. package/lib/node/markdown/tableHeadRow.js +0 -107
  303. package/lib/node/markdown/unorderedList.js +0 -107
  304. package/lib/node/markdown/verticalSpace.js +0 -151
  305. package/lib/nodeMap.js +0 -98
  306. package/lib/replacement/contentsItem.js +0 -134
  307. package/lib/replacement/contentsLink.js +0 -115
  308. package/lib/replacement/contentsList.js +0 -194
  309. package/lib/replacement/footnotesItem.js +0 -123
  310. package/lib/replacement/footnotesList.js +0 -173
  311. package/lib/replacement/index.js +0 -166
  312. package/lib/replacement/indexList.js +0 -121
  313. package/lib/replacement/subDivision/embedDirectives.js +0 -143
  314. package/lib/replacement/subDivision/includeDirectives.js +0 -175
  315. package/lib/replacement.js +0 -262
  316. package/lib/ruleNameToClassMap.js +0 -44
  317. package/lib/utilities/childNodes.js +0 -127
  318. package/lib/utilities/processing.js +0 -106
  319. package/lib/utilities/replacement.js +0 -195
  320. package/src/classFromOuterNode.js +0 -20
  321. package/src/elementMap.js +0 -322
  322. package/src/example/view/textarea/parseTree/markdown/inner.js +0 -36
  323. package/src/example/view/textarea/parseTree/markdown/outer.js +0 -27
  324. package/src/mixins/content.js +0 -16
  325. package/src/mixins/element.js +0 -29
  326. package/src/node/html/blockListingEnd.js +0 -11
  327. package/src/node/html/blockListingStart.js +0 -11
  328. package/src/node/html/className.js +0 -11
  329. package/src/node/html/comma.js +0 -18
  330. package/src/node/html/directive/pageNumber.js +0 -55
  331. package/src/node/markdown/blockLine.js +0 -90
  332. package/src/node/markdown/blockListingEnd.js +0 -9
  333. package/src/node/markdown/comma.js +0 -23
  334. package/src/node/markdown/directive/contents.js +0 -7
  335. package/src/node/markdown/directive/footnotes.js +0 -7
  336. package/src/node/markdown/directive/ignore.js +0 -7
  337. package/src/node/markdown/directive/index.js +0 -7
  338. package/src/node/markdown/directive.js +0 -15
  339. package/src/node/markdown/directives.js +0 -25
  340. package/src/node/markdown/emptyTableCell.js +0 -19
  341. package/src/node/markdown/endOfLine.js +0 -39
  342. package/src/node/markdown/indexHeading.js +0 -7
  343. package/src/node/markdown/item/unordered.js +0 -7
  344. package/src/node/markdown/item.js +0 -7
  345. package/src/node/markdown/nonsense.js +0 -9
  346. package/src/node/markdown/orderedList.js +0 -7
  347. package/src/node/markdown/plainText.js +0 -13
  348. package/src/node/markdown/subDivision.js +0 -64
  349. package/src/node/markdown/tableBody.js +0 -7
  350. package/src/node/markdown/tableBodyCell.js +0 -29
  351. package/src/node/markdown/tableBodyRow.js +0 -7
  352. package/src/node/markdown/tableCell.js +0 -19
  353. package/src/node/markdown/tableCellDivider.js +0 -7
  354. package/src/node/markdown/tableDivider.js +0 -7
  355. package/src/node/markdown/tableHead.js +0 -7
  356. package/src/node/markdown/tableHeadCell.js +0 -29
  357. package/src/node/markdown/tableHeadRow.js +0 -7
  358. package/src/node/markdown/unorderedList.js +0 -7
  359. package/src/node/markdown/verticalSpace.js +0 -39
  360. package/src/nodeMap.js +0 -200
  361. package/src/replacement/contentsItem.js +0 -54
  362. package/src/replacement/footnotesItem.js +0 -24
  363. package/src/replacement/footnotesList.js +0 -78
  364. package/src/replacement/index.js +0 -89
  365. package/src/replacement/indexList.js +0 -32
  366. package/src/replacement/subDivision/contentsDirective.js +0 -20
  367. package/src/replacement/subDivision/embedDirectives.js +0 -52
  368. package/src/replacement/subDivision/footnotesDirective.js +0 -20
  369. package/src/replacement/subDivision/includeDirectives.js +0 -58
  370. package/src/replacement/subDivision/indexDirective.js +0 -20
  371. package/src/replacement/subDivision/pageNumberDirective.js +0 -20
  372. package/src/replacement/subDivision.js +0 -41
  373. package/src/replacement.js +0 -185
  374. package/src/ruleNameToClassMap.js +0 -38
  375. package/src/utilities/childNodes.js +0 -178
  376. package/src/utilities/processing.js +0 -122
  377. package/src/utilities/replacement.js +0 -169
@@ -1,20 +1,69 @@
1
1
  "use strict";
2
2
 
3
+ import { nodeUtilities} from "occam-dom";
4
+ import { arrayUtilities } from "necessary";
5
+
6
+ import queries from "../../queries";
3
7
  import HTMLNode from "../../node/html";
8
+ import htmlNodeMap from "../../map/node/html";
4
9
 
5
- export default class TopmostHTMLNode extends HTMLNode {
6
- asHTML(context) {
7
- let html;
10
+ const { push } = arrayUtilities,
11
+ { topmostNodeFromOuterNodes } = nodeUtilities;
8
12
 
9
- const indent = null,
10
- childNodesHTML = this.childNodesAsHTML(indent, context);
13
+ export default class TopmostHTMLNode extends HTMLNode {
14
+ adjustIndent(indent) {
15
+ return indent;
16
+ }
11
17
 
12
- html = childNodesHTML; ///
18
+ asString() {
19
+ const { tagName } = this.constructor,
20
+ string = tagName; ///
13
21
 
14
- return html;
22
+ return string;
15
23
  }
16
24
 
25
+ static tagName = "html";
26
+
27
+ static className = null;
28
+
17
29
  static fromNothing() { return HTMLNode.fromNothing(TopmostHTMLNode); }
18
30
 
19
- static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(TopmostHTMLNode, outerNode); }
31
+ static fromTopmostMarkdownNode(topmostMarkdownNode) {
32
+
33
+ }
34
+
35
+ static fromDivisionMarkdownNode(divisionMarkdownNode) {
36
+ const node = divisionMarkdownNode, ///
37
+ nodes = nodesFromNodeAndQueries(node, queries),
38
+ topmostHTMLNode = topmostNodeFromOuterNodes(ClassFromOuterNode, nodes);
39
+
40
+ return topmostHTMLNode;
41
+ }
42
+ }
43
+
44
+ function ClassFromOuterNode(outerNode) {
45
+ let Class;
46
+
47
+ if (outerNode === null) {
48
+ Class = TopmostHTMLNode; ///
49
+ } else {
50
+ const nonTerminalNode = outerNode, ///
51
+ ruleName = nonTerminalNode.getRuleName();
52
+
53
+ Class = htmlNodeMap[ruleName] || HTMLNode;
54
+ }
55
+
56
+ return Class;
57
+ }
58
+
59
+ function nodesFromNodeAndQueries(node, queries) {
60
+ const nodes = [];
61
+
62
+ queries.forEach((query) => {
63
+ const queryNodes = query.execute(node);
64
+
65
+ push(nodes, queryNodes);
66
+ });
67
+
68
+ return nodes;
20
69
  }
package/src/node/html.js CHANGED
@@ -2,42 +2,68 @@
2
2
 
3
3
  import { Node } from "occam-dom";
4
4
 
5
- import elementMap from "../elementMap";
5
+ import nodeMixins from "../mixins/node";
6
6
 
7
7
  import { EMPTY_STRING, DOUBLE_SPACE } from "../constants";
8
8
 
9
- export default class HTMLNode extends Node {
10
- getRuleName() {
11
- let ruleName;
9
+ class HTMLNode extends Node {
10
+ constructor(outerNode, parentNode, childNodes, domElement) {
11
+ super(outerNode, parentNode, childNodes);
12
12
 
13
- const outerNode = this.getOuterNode(),
14
- nonTerminalNode = outerNode; ///
13
+ this.domElement = domElement;
14
+ }
15
15
 
16
- ruleName = nonTerminalNode.getRuleName();
16
+ getDOMElement() {
17
+ return this.domElement;
18
+ }
17
19
 
18
- return ruleName;
20
+ setDOMElement(domElement) {
21
+ this.domElement = domElement;
19
22
  }
20
23
 
21
- tagName(context) {
22
- let tagName;
24
+ getMarkdownNode() {
25
+ const outerNode = this.getOuterNode(),
26
+ markdownNode = outerNode; ///
23
27
 
24
- const ruleName = this.getRuleName();
28
+ return markdownNode;
29
+ }
25
30
 
26
- const element = elementMap[ruleName];
31
+ getRuleName() { return this.outerNode.getRuleName(); }
27
32
 
28
- ({ tagName } = element);
33
+ adjustIndent(indent) {
34
+ indent = (indent === null) ?
35
+ EMPTY_STRING :
36
+ `${DOUBLE_SPACE}${indent}`;
29
37
 
30
- return tagName;
38
+ return indent;
31
39
  }
32
40
 
33
- className(context) {
34
- let className;
41
+ lines(context) {
42
+ let lines;
43
+
44
+ ({ lines = null } = this.constructor);
45
+
46
+ if (lines === null) {
47
+ lines = this.reduceChildNode((lines, childNode) => {
48
+ const childNodeLines = childNode.lines(context);
49
+
50
+ lines += childNodeLines;
51
+
52
+ return lines;
53
+ }, 0);
54
+ }
35
55
 
36
- const ruleName = this.getRuleName();
56
+ return lines;
57
+ }
37
58
 
38
- const element = elementMap[ruleName];
59
+ tagName(context) {
60
+ const { tagName } = this.constructor;
39
61
 
40
- ({ className } = element);
62
+ return tagName;
63
+ }
64
+
65
+ className(context) {
66
+ const { className } = this.constructor;
41
67
 
42
68
  return className;
43
69
  }
@@ -93,12 +119,56 @@ export default class HTMLNode extends Node {
93
119
  return attributeValue;
94
120
  }
95
121
 
96
- adjustIndent(indent) {
97
- indent = (indent === null) ?
98
- EMPTY_STRING :
99
- `${DOUBLE_SPACE}${indent}`;
122
+ createDOMElement(context) {
123
+ let domElement;
100
124
 
101
- return indent;
125
+ const tagName = this.tagName(context);
126
+
127
+ domElement = document.createElement(tagName);
128
+
129
+ const className = this.className(context),
130
+ attributeName = this.attributeName(context),
131
+ attributeValue = this.attributeValue(context);
132
+
133
+ if (className !== null) {
134
+ Object.assign(domElement, {
135
+ className
136
+ });
137
+ }
138
+
139
+ if ((attributeName !== null) && (attributeValue !== null)) {
140
+ domElement.setAttribute(attributeName, attributeValue);
141
+ }
142
+
143
+ return domElement;
144
+ }
145
+
146
+ mount(parentDOMElement, siblingDOMElement, context) {
147
+ this.domElement = this.createDOMElement(context);
148
+
149
+ parentDOMElement.insertBefore(this.domElement, siblingDOMElement)
150
+
151
+ parentDOMElement = this.domElement; ///
152
+
153
+ siblingDOMElement = null;
154
+
155
+ this.childNodes.forEach((childNode) => {
156
+ childNode.mount(parentDOMElement, siblingDOMElement, context);
157
+ });
158
+ }
159
+
160
+ unmount(parentDOMElement, context) {
161
+ {
162
+ const parentDOMElement = this.domElement; ///
163
+
164
+ this.childNodes.forEach((childNode) => {
165
+ childNode.unmount(parentDOMElement, context);
166
+ });
167
+ }
168
+
169
+ parentDOMElement.removeChild(this.domElement);
170
+
171
+ this.domElement = null;
102
172
  }
103
173
 
104
174
  asHTML(indent, context) {
@@ -110,61 +180,69 @@ export default class HTMLNode extends Node {
110
180
 
111
181
  let html;
112
182
 
113
- const tagName = this.tagName(context);
183
+ indent = this.adjustIndent(indent);
114
184
 
115
- if (tagName === null) {
116
- const childNodesHTML = this.childNodesAsHTML(indent, context);
185
+ const childNodesHTML = this.childNodesAsHTML(indent, context);
117
186
 
118
- html = childNodesHTML; ///
119
- } else {
120
- indent = this.adjustIndent(indent);
121
-
122
- const childNodesHTML = this.childNodesAsHTML(indent, context);
187
+ if (childNodesHTML !== EMPTY_STRING) {
188
+ const startingTag = this.startingTag(context),
189
+ closingTag = this.closingTag(context);
123
190
 
124
- if (childNodesHTML !== null) {
125
- const startingTag = this.startingTag(context),
126
- closingTag = this.closingTag(context);
127
-
128
- html = (indent === null) ?
129
- `${startingTag}${childNodesHTML}${closingTag}` :
130
- `${indent}${startingTag}
191
+ html = `${indent}${startingTag}
131
192
  ${childNodesHTML}${indent}${closingTag}
132
193
  `;
133
- } else {
134
- const selfClosingTag = this.selfClosingTag(context);
194
+ } else {
195
+ const selfClosingTag = this.selfClosingTag(context);
135
196
 
136
- html = (indent === null) ?
137
- selfClosingTag : ///
138
- `${indent}${selfClosingTag}
197
+ html = `${indent}${selfClosingTag}
139
198
  `;
140
- }
141
199
  }
142
200
 
143
201
  return html;
144
202
  }
145
203
 
204
+ asPlainText(context) {
205
+ let plainText;
206
+
207
+ const childNodesPlainText = this.childNodesAsPlainText(context);
208
+
209
+ plainText = childNodesPlainText; ///
210
+
211
+ return plainText;
212
+ }
213
+
146
214
  childNodesAsHTML(indent, context) {
147
215
  const childNodesHTML = this.reduceChildNode((childNodesHTML, childNode) => {
148
216
  const childNodeHTML = childNode.asHTML(indent, context);
149
217
 
150
- if (childNodeHTML !== null) {
151
- childNodesHTML = (childNodesHTML === null) ?
152
- childNodeHTML : ///
153
- `${childNodesHTML}${childNodeHTML}`;
154
- }
218
+ childNodesHTML = `${childNodesHTML}${childNodeHTML}`;
155
219
 
156
220
  return childNodesHTML;
157
- }, null);
221
+ }, EMPTY_STRING);
158
222
 
159
223
  return childNodesHTML;
160
224
  }
161
225
 
226
+ childNodesAsPlainText(context) {
227
+ const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode) => {
228
+ const childNodePlainText = childNode.asPlainText(context);
229
+
230
+ childNodesPlainText = `${childNodesPlainText}
231
+ ${childNodePlainText}`;
232
+
233
+ return childNodesPlainText;
234
+ }, EMPTY_STRING);
235
+
236
+ return childNodesPlainText;
237
+ }
238
+
162
239
  static fromNothing(Class) {
163
240
  if (Class === undefined) {
164
241
  Class = HTMLNode; ///
165
242
  }
166
243
 
167
- const node = Node.fromNothing(Class);
244
+ const domElement = null,
245
+ node = Node.fromNothing(Class, domElement);
168
246
 
169
247
  return node;
170
248
  }
@@ -176,8 +254,13 @@ ${childNodesHTML}${indent}${closingTag}
176
254
  Class = HTMLNode; ///
177
255
  }
178
256
 
179
- const node = Node.fromOuterNode(Class, outerNode);
257
+ const domElement = null,
258
+ node = Node.fromOuterNode(Class, outerNode, domElement);
180
259
 
181
260
  return node;
182
261
  }
183
262
  }
263
+
264
+ Object.assign(HTMLNode.prototype, nodeMixins);
265
+
266
+ export default HTMLNode;
@@ -6,7 +6,6 @@ import MarkdownNode from "../../node/markdown";
6
6
 
7
7
  import { EMPTY_STRING } from "../../constants";
8
8
  import { ANCHOR_RULE_NAME } from "../../ruleNames";
9
- import { ID_ATTRIBUTE_NAME } from "../../attributeNames";
10
9
 
11
10
  export default class AnchorMarkdownNode extends MarkdownNode {
12
11
  constructor(ruleName, childNodes, opacity, precedence, domElement, prepend, identifier) {
@@ -24,30 +23,11 @@ export default class AnchorMarkdownNode extends MarkdownNode {
24
23
  return this.identifier;
25
24
  }
26
25
 
27
- createDOMElement(context) {
28
- let domElement;
29
-
30
- const content = this.content(context),
31
- textNode = document.createTextNode(content);
32
-
33
- domElement = super.createDOMElement(context)
34
-
35
- const parentDOMElement = domElement; ///
36
-
37
- domElement = textNode; ///
38
-
39
- parentDOMElement.appendChild(domElement);
40
-
41
- domElement = parentDOMElement; ///
42
-
43
- return domElement;
44
- }
45
-
46
- content(context) {
47
- const content = EMPTY_STRING;
48
-
49
- return content;
50
- }
26
+ // content(context) {
27
+ // const content = EMPTY_STRING;
28
+ //
29
+ // return content;
30
+ // }
51
31
 
52
32
  clone() { return super.clone(this.prepend, this.identifier); }
53
33
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
4
 
5
- export default class TableMarkdownNode extends MarkdownNode {
6
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TableMarkdownNode, ruleName, childNodes, opacity); }
5
+ export default class BlockEndMarkdownNode extends MarkdownNode {
6
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(BlockEndMarkdownNode, ruleName, childNodes, opacity); }
7
7
  }
@@ -4,19 +4,13 @@ import MarkdownNode from "../../node/markdown";
4
4
 
5
5
  export default class BlockListingMarkdownNode extends MarkdownNode {
6
6
  className(context) {
7
- let className = super.className(context);
7
+ const className = this.fromFirstChildNode((firstChildNode) => {
8
+ const blockStartMarkdownNode = firstChildNode, ///
9
+ className = blockStartMarkdownNode.className(context);
8
10
 
9
- const blockListingStartMarkdownNodeClassName = this.fromFirstChildNode((firstChildNode) => {
10
- const blockListingStartMarkdownNode = firstChildNode, ///
11
- blockListingStartMarkdownNodeClassName = blockListingStartMarkdownNode.className(context);
12
-
13
- return blockListingStartMarkdownNodeClassName;
11
+ return className;
14
12
  });
15
13
 
16
- if (blockListingStartMarkdownNodeClassName !== null) {
17
- className = `${className} ${blockListingStartMarkdownNodeClassName}`;
18
- }
19
-
20
14
  return className;
21
15
  }
22
16
 
@@ -3,15 +3,15 @@
3
3
  import MarkdownNode from "../../node/markdown";
4
4
  import ClassNameMarkdownNode from "./className";
5
5
 
6
- export default class BlockListingStartMarkdownNode extends MarkdownNode {
6
+ export default class BlockStartMarkdownNode extends MarkdownNode {
7
7
  className(context) {
8
8
  const className = this.fromSecondChildNode((secondChildNode) => {
9
9
  let className = null;
10
10
 
11
- const secondChildNodeClassNameMarkdownNode = (secondChildNode instanceof ClassNameMarkdownNode)
11
+ const secondChildNodeClassNameMarkdownNode = (secondChildNode instanceof ClassNameMarkdownNode);
12
12
 
13
13
  if (secondChildNodeClassNameMarkdownNode) {
14
- const classNameMarkdownNode = secondChildNode; ///
14
+ const classNameMarkdownNode = secondChildNode; ///
15
15
 
16
16
  className = classNameMarkdownNode.className(context);
17
17
  }
@@ -22,7 +22,5 @@ export default class BlockListingStartMarkdownNode extends MarkdownNode {
22
22
  return className;
23
23
  }
24
24
 
25
- static lines = 2;
26
-
27
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(BlockListingStartMarkdownNode, ruleName, childNodes, opacity); }
25
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(BlockStartMarkdownNode, ruleName, childNodes, opacity); }
28
26
  }
@@ -6,8 +6,8 @@ export default class ClassNameMarkdownNode extends MarkdownNode {
6
6
  className(context) {
7
7
  const className = this.fromSecondChildNode((secondChildNode) => {
8
8
  const identifierTerminalNode = secondChildNode, ///
9
- identifierTerminalNodeContent = identifierTerminalNode.getContent(),
10
- className = identifierTerminalNodeContent; ///
9
+ content = identifierTerminalNode.getContent(),
10
+ className = content; ///
11
11
 
12
12
  return className;
13
13
  });
@@ -5,11 +5,11 @@ import MarkdownNode from "../../node/markdown";
5
5
  import { CONTENTS_ITEM_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class ContentsItemMarkdownNode extends MarkdownNode {
8
- static fromReplacements(replacements) {
8
+ static fromReplacements(transforms) {
9
9
  const ruleName = CONTENTS_ITEM_RULE_NAME,
10
- childNodes = replacements.map((replacement) => {
11
- const replacementNode = replacement.getNode(),
12
- childNode = replacementNode; ///
10
+ childNodes = transforms.map((transform) => {
11
+ const transformNode = transform.getNode(),
12
+ childNode = transformNode; ///
13
13
 
14
14
  return childNode;
15
15
  }),
@@ -5,12 +5,6 @@ import MarkdownNode from "../../node/markdown";
5
5
  import { CONTENTS_LIST_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class ContentsListMarkdownNode extends MarkdownNode {
8
- asPlainText(context) {
9
- const plainText = null;
10
-
11
- return plainText;
12
- }
13
-
14
8
  static fromContentsItemReplacements(contentsItemReplacements) {
15
9
  const ruleName = CONTENTS_LIST_RULE_NAME,
16
10
  childNodes = contentsItemReplacements.map((contentsItemReplacement) => {
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import PathMarkdownNode from "../path";
4
- import DirectiveMarkdownNode from "../../../node/markdown/directive";
5
- import EmbedDirectiveReplacement from "../../../replacement/embedDirective";
3
+ import MarkdownNode from "../../../node/markdown";
4
+ import PathMarkdownNode from "../../../node/markdown/path";
5
+ import EmbedDirectiveTransform from "../../../transform/embedDirective";
6
6
 
7
- export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
7
+ export default class EmbedDirectiveMarkdownNode extends MarkdownNode {
8
8
  resolve(context) {
9
- let embedDirectiveReplacement = null;
9
+ let embedDirectiveTransform = null;
10
10
 
11
11
  const filePath = this.filePath(context);
12
12
 
@@ -25,11 +25,11 @@ export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
25
25
  const divisionMarkdownNode = importedNode, ///
26
26
  tokens = importedTokens; ///
27
27
 
28
- embedDirectiveReplacement = EmbedDirectiveReplacement.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
28
+ embedDirectiveTransform = EmbedDirectiveTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
29
29
  }
30
30
  }
31
31
 
32
- return embedDirectiveReplacement;
32
+ return embedDirectiveTransform;
33
33
  }
34
34
 
35
35
  filePath(context) {
@@ -40,9 +40,9 @@ export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
40
40
 
41
41
  if (firstLastChildNodePathMarkdownNode) {
42
42
  const pathMarkdownNode = firstLastChildNode, ///
43
- pathMarkdownNodeContent = pathMarkdownNode.getContent();
43
+ pathMarkdownNodePath = pathMarkdownNode.path(context);
44
44
 
45
- filePath = pathMarkdownNodeContent; ///
45
+ filePath = pathMarkdownNodePath; ///
46
46
  }
47
47
 
48
48
  return filePath;
@@ -51,5 +51,5 @@ export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
51
51
  return filePath;
52
52
  }
53
53
 
54
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
54
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(EmbedDirectiveMarkdownNode, ruleName, childNodes, opacity); }
55
55
  }
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import PathMarkdownNode from "../path";
4
- import DirectiveMarkdownNode from "../../../node/markdown/directive";
5
- import IncludeDirectiveReplacement from "../../../replacement/includeDirective";
3
+ import MarkdownNode from "../../../node/markdown";
4
+ import PathMarkdownNode from "../../../node/markdown/path";
5
+ import IncludeDirectiveTransform from "../../../transform/includeDirective";
6
6
 
7
- export default class IncludeDirectiveMarkdownNode extends DirectiveMarkdownNode {
7
+ export default class IncludeDirectiveMarkdownNode extends MarkdownNode {
8
8
  resolve(context) {
9
- let includeDirectiveReplacement = null;
9
+ let includeDirectiveTransform = null;
10
10
 
11
11
  const filePath = this.filePath(context);
12
12
 
@@ -30,11 +30,11 @@ export default class IncludeDirectiveMarkdownNode extends DirectiveMarkdownNode
30
30
 
31
31
  divisionMarkdownNode.setDivisionClassName(divisionClassName);
32
32
 
33
- includeDirectiveReplacement = IncludeDirectiveReplacement.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
33
+ includeDirectiveTransform = IncludeDirectiveTransform.fromDivisionMarkdownNodeAndTokens(divisionMarkdownNode, tokens);
34
34
  }
35
35
  }
36
36
 
37
- return includeDirectiveReplacement;
37
+ return includeDirectiveTransform;
38
38
  }
39
39
 
40
40
  filePath(context) {
@@ -45,9 +45,9 @@ export default class IncludeDirectiveMarkdownNode extends DirectiveMarkdownNode
45
45
 
46
46
  if (firstLastChildNodePathMarkdownNode) {
47
47
  const pathMarkdownNode = firstLastChildNode, ///
48
- pathMarkdownNodeContent = pathMarkdownNode.getContent();
48
+ pathMarkdownNodePath = pathMarkdownNode.path(context);
49
49
 
50
- filePath = pathMarkdownNodeContent; ///
50
+ filePath = pathMarkdownNodePath; ///
51
51
  }
52
52
 
53
53
  return filePath;
@@ -56,5 +56,5 @@ export default class IncludeDirectiveMarkdownNode extends DirectiveMarkdownNode
56
56
  return filePath;
57
57
  }
58
58
 
59
- static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
59
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(IncludeDirectiveMarkdownNode, ruleName, childNodes, opacity); }
60
60
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import DirectiveMarkdownNode from "../../../node/markdown/directive";
3
+ import MarkdownNode from "../../../node/markdown";
4
4
 
5
- export default class PageNumberDirectiveMarkdownNode extends DirectiveMarkdownNode {
6
- constructor(ruleName, childNodes, precedence, opacity, domElement, pageNumber) {
7
- super(ruleName, childNodes, precedence, opacity, domElement);
5
+ export default class PageNumberDirectiveMarkdownNode extends MarkdownNode {
6
+ constructor(ruleName, childNodes, precedence, opacity, pageNumber) {
7
+ super(ruleName, childNodes, precedence, opacity);
8
8
 
9
9
  this.pageNumber = pageNumber;
10
10
  }
@@ -17,36 +17,17 @@ export default class PageNumberDirectiveMarkdownNode extends DirectiveMarkdownNo
17
17
  this.pageNumber = pageNumber;
18
18
  }
19
19
 
20
- content(context) {
21
- const content = this.pageNumber;
22
-
23
- return content;
24
- }
25
-
26
- createDOMElement(context) {
27
- let domElement;
28
-
29
- const content = this.content(context),
30
- textNode = document.createTextNode(content);
31
-
32
- domElement = super.createDOMElement(context);
33
-
34
- const parentDOMElement = domElement; ///
35
-
36
- domElement = textNode; ///
37
-
38
- parentDOMElement.appendChild(domElement);
39
-
40
- domElement = parentDOMElement;
41
-
42
- return domElement;
43
- }
20
+ // content(context) {
21
+ // const content = this.pageNumber;
22
+ //
23
+ // return content;
24
+ // }
44
25
 
45
26
  clone() { return super.clone(this.pageNumber); }
46
27
 
47
28
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) {
48
29
  const pageNumber = null,
49
- pageNumberDirectiveMarkdownNode = DirectiveMarkdownNode.fromRuleNameChildNodesAndOpacity(PageNumberDirectiveMarkdownNode, ruleName, childNodes, opacity, pageNumber);
30
+ pageNumberDirectiveMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(PageNumberDirectiveMarkdownNode, ruleName, childNodes, opacity, pageNumber);
50
31
 
51
32
  return pageNumberDirectiveMarkdownNode;
52
33
  }