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
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ import MarkdownNode from "../../node/markdown";
4
+ import DivisionMarkdownNode from "../../node/markdown/division";
5
+
6
+ export default class TopmostMarkdownNode extends MarkdownNode {
7
+ resolve(context) {
8
+ // this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
9
+ // divisionMarkdownNode.resolveIncludes(context);
10
+ // });
11
+
12
+ this.filterDivisionMarkdownNode((divisionMarkdownNode) => {
13
+ const ignored = divisionMarkdownNode.isIgnored();
14
+
15
+ if (!ignored) {
16
+ return true;
17
+ }
18
+ });
19
+
20
+ // this.forEachDivisionMarkdownNode((divisionMarkdownNode) => {
21
+ // divisionMarkdownNode.resolveEmbeddings(context);
22
+ // });
23
+ }
24
+
25
+ getDivisionMarkdownNodeAt(index) {
26
+ const divisionNodeIndex = index, ///
27
+ divisionMarkdownNode = this.findDivisionMarkdownNode((childNode, index) => {
28
+ const childNodeIndex = index; ///
29
+
30
+ if (childNodeIndex === divisionNodeIndex) {
31
+ return true;
32
+ }
33
+ });
34
+
35
+ return divisionMarkdownNode;
36
+ }
37
+
38
+ findDivisionMarkdownNode(callback) {
39
+ let index = 0;
40
+
41
+ const divisionMarkdownNode = this.findChildNode((childNode) => {
42
+ const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
43
+
44
+ if (childNodeDivisionMarkdownNode) {
45
+ const divisionMarkNode = childNode, ///
46
+ result = callback(divisionMarkNode, index);
47
+
48
+ if (result) {
49
+ return true;
50
+ }
51
+
52
+ index++;
53
+ }
54
+ });
55
+
56
+ return divisionMarkdownNode;
57
+ }
58
+
59
+ filterDivisionMarkdownNode(callback) {
60
+ this.filterChildNode((childNode) => {
61
+ const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
62
+
63
+ if (!childNodeDivisionMarkdownNode) {
64
+ return true;
65
+ }
66
+
67
+ if (childNodeDivisionMarkdownNode) {
68
+ const divisionMarkNode = childNode, ///
69
+ result = callback(divisionMarkNode);
70
+
71
+ if (result) {
72
+ return true;
73
+ }
74
+ }
75
+ });
76
+ }
77
+
78
+ forEachDivisionMarkdownNode(callback) {
79
+ this.forEachChildNode((childNode) => {
80
+ const childNodeDivisionMarkdownNode = (childNode instanceof DivisionMarkdownNode);
81
+
82
+ if (childNodeDivisionMarkdownNode) {
83
+ const divisionMarkNode = childNode; ///
84
+
85
+ callback(divisionMarkNode);
86
+ }
87
+ });
88
+ }
89
+
90
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TopmostMarkdownNode, ruleName, childNodes, opacity); }
91
+ }
@@ -2,211 +2,12 @@
2
2
 
3
3
  import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- import elementMap from "../elementMap";
6
5
  import nodeMixins from "../mixins/node";
7
- import elementMixins from "../mixins/element";
8
-
9
- import { EMPTY_STRING } from "../constants";
10
6
 
11
7
  class MarkdownNode extends NonTerminalNode {
12
- constructor(ruleName, childNodes, precedence, opacity, domElement) {
13
- super(ruleName, childNodes, precedence, opacity);
14
-
15
- this.domElement = domElement;
16
- }
17
-
18
- getDOMElement() {
19
- return this.domElement;
20
- }
21
-
22
- setDOMElement(domElement) {
23
- this.domElement = domElement;
24
- }
25
-
26
- tagName(context) {
27
- const element = elementMap[this.ruleName];
28
-
29
- const { tagName } = element;
30
-
31
- return tagName;
32
- }
33
-
34
- className(context) {
35
- const element = elementMap[this.ruleName];
36
-
37
- const { className } = element;
38
-
39
- return className;
40
- }
41
-
42
- attributeName(context) {
43
- const attributeName = null;
44
-
45
- return attributeName;
46
- }
47
-
48
- attributeValue(context) {
49
- const attributeValue = null;
50
-
51
- return attributeValue;
52
- }
53
-
54
- isDivisionMarkdownNode() {
55
- const divisionMarkdownNode = false;
56
-
57
- return divisionMarkdownNode;
58
- }
59
-
60
- isPlainTextMarkdownNode() {
61
- const plainTextMarkdownNode = false;
62
-
63
- return plainTextMarkdownNode;
64
- }
65
-
66
- lines(context) {
67
- let lines;
68
-
69
- ({ lines = null } = this.constructor);
70
-
71
- if (lines === null) {
72
- lines = this.reduceChildNode((lines, childNode) => {
73
- const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
74
-
75
- if (childNodeMarkdownNode) {
76
- const markdownNode = childNode, ///
77
- markdownNodeLines = markdownNode.lines(context);
78
-
79
- lines += markdownNodeLines;
80
- }
81
-
82
- return lines;
83
- }, 0);
84
- }
85
-
86
- return lines;
87
- }
88
-
89
- mount(parentDOMElement, siblingDOMElement, context) {
90
- this.domElement = this.createDOMElement(context);
91
-
92
- if (this.domElement !== null) {
93
- parentDOMElement.insertBefore(this.domElement, siblingDOMElement)
94
-
95
- parentDOMElement = this.domElement; ///
96
-
97
- siblingDOMElement = null;
98
- }
99
-
100
- this.childNodes.forEach((childNode) => {
101
- const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
102
-
103
- if (childNodeMarkdownNode) {
104
- const markdownNode = childNode; ///
105
-
106
- markdownNode.mount(parentDOMElement, siblingDOMElement, context);
107
- }
108
- });
109
- }
110
-
111
- unmount(parentDOMElement, context) {
112
- if (this.domElement !== null) {
113
- parentDOMElement.removeChild(this.domElement);
114
-
115
- parentDOMElement = this.domElement; ///
116
-
117
- this.domElement = null;
118
-
119
- return;
120
- }
121
-
122
- this.childNodes.forEach((childNode) => {
123
- const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
124
-
125
- if (childNodeMarkdownNode) {
126
- childNode.unmount(parentDOMElement, context);
127
- }
128
- });
129
- }
130
-
131
- isMounted() {
132
- const mounted = (this.domElement !== null);
133
-
134
- return mounted;
135
- }
136
-
137
- createDOMElement(context) {
138
- let domElement = null;
139
-
140
- const tagName = this.tagName(context);
141
-
142
- if (tagName !== null) {
143
- domElement = document.createElement(tagName);
144
-
145
- const className = this.className(context),
146
- attributeName = this.attributeName(context),
147
- attributeValue = this.attributeValue(context);
148
-
149
- if (className !== null) {
150
- Object.assign(domElement, {
151
- className
152
- });
153
- }
154
-
155
- if ((attributeName !== null) && (attributeValue !== null)) {
156
- domElement.setAttribute(attributeName, attributeValue);
157
- }
158
- }
159
-
160
- return domElement;
161
- }
162
-
163
- asPlainText(context) {
164
- let plainText = null;
165
-
166
- const tagName = this.tagName(context);
167
-
168
- if (tagName !== null) {
169
- const childNodesPlainText = this.childNodesAsPlainText(context);
170
-
171
- plainText = childNodesPlainText; ///
172
- }
173
-
174
- return plainText;
175
- }
176
-
177
- childNodesAsPlainText(context) {
178
- const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode) => {
179
- const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
180
-
181
- if (childNodeMarkdownNode) {
182
- const markdownNode = childNode, ///
183
- markdownNodePlainText = markdownNode.asPlainText(context);
184
-
185
- if (markdownNodePlainText !== null) {
186
- childNodesPlainText = (childNodesPlainText === null) ?
187
- markdownNodePlainText : ///
188
- `${childNodesPlainText}
189
- ${markdownNodePlainText}`;
190
- }
191
- }
192
-
193
- return childNodesPlainText;
194
- }, null);
195
-
196
- return childNodesPlainText;
197
- }
198
-
199
- clone(...remainingArguments) { return super.clone(this.domElement, ...remainingArguments); }
200
-
201
- static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) {
202
- const domElement = null,
203
- markdownNode = NonTerminalNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, domElement, ...remainingArguments);
204
-
205
- return markdownNode;
206
- }
8
+ static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) { return NonTerminalNode.fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments); }
207
9
  }
208
10
 
209
11
  Object.assign(MarkdownNode.prototype, nodeMixins);
210
- Object.assign(MarkdownNode.prototype, elementMixins);
211
12
 
212
13
  export default MarkdownNode;
package/src/queries.js CHANGED
@@ -2,93 +2,13 @@
2
2
 
3
3
  import { Query } from "occam-query";
4
4
 
5
- import { LINE_RULE_NAME,
6
- IMAGE_RULE_NAME,
7
- TABLE_RULE_NAME,
8
- ERROR_RULE_NAME,
9
- ANCHOR_RULE_NAME,
10
- DIVISION_RULE_NAME,
11
- PARAGRAPH_RULE_NAME,
12
- HYPERLINK_RULE_NAME,
13
- INDEX_LIST_RULE_NAME,
14
- INDEX_ITEM_RULE_NAME,
15
- INDEX_LINK_RULE_NAME,
16
- TABLE_HEAD_RULE_NAME,
17
- TABLE_BODY_RULE_NAME,
18
- BLOCK_LINE_RULE_NAME,
19
- EMAIL_LINK_RULE_NAME,
20
- STRONG_TEXT_RULE_NAME,
21
- ORDERED_LIST_RULE_NAME,
22
- ORDERED_ITEM_RULE_NAME,
23
- INDEX_HEADING_RULE_NAME,
24
- BLOCK_LISTING_RULE_NAME,
25
- CONTENTS_LINK_RULE_NAME,
26
- CONTENTS_ITEM_RULE_NAME,
27
- CONTENTS_LIST_RULE_NAME,
28
- FOOTNOTE_LINK_RULE_NAME,
29
- TABLE_HEAD_ROW_RULE_NAME,
30
- TABLE_BODY_ROW_RULE_NAME,
31
- INLINE_LISTING_RULE_NAME,
32
- UNORDERED_LIST_RULE_NAME,
33
- UNORDERED_ITEM_RULE_NAME,
34
- FOOTNOTES_ITEM_RULE_NAME,
35
- FOOTNOTES_LIST_RULE_NAME,
36
- TABLE_HEAD_CELL_RULE_NAME,
37
- TABLE_BODY_CELL_RULE_NAME,
38
- EMPHASISED_TEXT_RULE_NAME,
39
- PRIMARY_HEADING_RULE_NAME,
40
- TERTIARY_HEADING_RULE_NAME,
41
- SECONDARY_HEADING_RULE_NAME,
42
- QUATERNARY_HEADING_RULE_NAME,
43
- PAGE_NUMBER_DIRECTIVE_RULE_NAME,
44
- STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "./ruleNames";
5
+ import { ruleNames } from "./map/node//html";
45
6
 
46
- const expressionStrings = [
47
- `//${LINE_RULE_NAME}`,
48
- `//${IMAGE_RULE_NAME}`,
49
- `//${TABLE_RULE_NAME}`,
50
- `//${ERROR_RULE_NAME}`,
51
- `//${ANCHOR_RULE_NAME}`,
52
- `//${DIVISION_RULE_NAME}`,
53
- `//${PARAGRAPH_RULE_NAME}`,
54
- `//${HYPERLINK_RULE_NAME}`,
55
- `//${INDEX_LIST_RULE_NAME}`,
56
- `//${INDEX_ITEM_RULE_NAME}`,
57
- `//${INDEX_LINK_RULE_NAME}`,
58
- `//${TABLE_HEAD_RULE_NAME}`,
59
- `//${TABLE_BODY_RULE_NAME}`,
60
- `//${BLOCK_LINE_RULE_NAME}`,
61
- `//${EMAIL_LINK_RULE_NAME}`,
62
- `//${STRONG_TEXT_RULE_NAME}`,
63
- `//${ORDERED_LIST_RULE_NAME}`,
64
- `//${ORDERED_ITEM_RULE_NAME}`,
65
- `//${INDEX_HEADING_RULE_NAME}`,
66
- `//${BLOCK_LISTING_RULE_NAME}`,
67
- `//${CONTENTS_LINK_RULE_NAME}`,
68
- `//${CONTENTS_ITEM_RULE_NAME}`,
69
- `//${CONTENTS_LIST_RULE_NAME}`,
70
- `//${FOOTNOTE_LINK_RULE_NAME}`,
71
- `//${TABLE_HEAD_ROW_RULE_NAME}`,
72
- `//${TABLE_BODY_ROW_RULE_NAME}`,
73
- `//${INLINE_LISTING_RULE_NAME}`,
74
- `//${UNORDERED_LIST_RULE_NAME}`,
75
- `//${UNORDERED_ITEM_RULE_NAME}`,
76
- `//${FOOTNOTES_ITEM_RULE_NAME}`,
77
- `//${FOOTNOTES_LIST_RULE_NAME}`,
78
- `//${TABLE_HEAD_CELL_RULE_NAME}`,
79
- `//${TABLE_BODY_CELL_RULE_NAME}`,
80
- `//${EMPHASISED_TEXT_RULE_NAME}`,
81
- `//${PRIMARY_HEADING_RULE_NAME}`,
82
- `//${TERTIARY_HEADING_RULE_NAME}`,
83
- `//${SECONDARY_HEADING_RULE_NAME}`,
84
- `//${QUATERNARY_HEADING_RULE_NAME}`,
85
- `//${PAGE_NUMBER_DIRECTIVE_RULE_NAME}`,
86
- `//${STRONGLY_EMPHASISED_TEXT_RULE_NAME}`
87
- ],
88
- queries = expressionStrings.map((expressionString) => {
89
- const query = Query.fromExpressionString(expressionString);
7
+ const queries = ruleNames.map((ruleName) => {
8
+ const expressionString = `//${ruleName}`,
9
+ query = Query.fromExpressionString(expressionString);
90
10
 
91
- return query;
92
- });
11
+ return query;
12
+ });
93
13
 
94
14
  export default queries;
package/src/ruleNames.js CHANGED
@@ -2,14 +2,17 @@
2
2
 
3
3
  export const LINE_RULE_NAME = "line";
4
4
  export const PATH_RULE_NAME = "path";
5
- export const COMMA_RULE_NAME = "comma";
6
5
  export const IMAGE_RULE_NAME = "image";
7
6
  export const TABLE_RULE_NAME = "table";
8
7
  export const ERROR_RULE_NAME = "error";
8
+ export const COMMA_RULE_NAME = "comma";
9
9
  export const ANCHOR_RULE_NAME = "anchor";
10
+ export const FOOTER_RULE_NAME = "footer";
11
+ export const TOPMOST_RULE_NAME = "markdown"; ///
10
12
  export const DIVISION_RULE_NAME = "division";
11
13
  export const FOOTNOTE_RULE_NAME = "footnote";
12
14
  export const NONSENSE_RULE_NAME = "nonsense";
15
+ export const BLOCK_END_RULE_NAME = "blockEnd";
13
16
  export const REFERENCE_RULE_NAME = "reference";
14
17
  export const PARAGRAPH_RULE_NAME = "paragraph";
15
18
  export const HYPERLINK_RULE_NAME = "hyperlink";
@@ -21,13 +24,15 @@ export const TABLE_HEAD_RULE_NAME = "tableHead";
21
24
  export const TABLE_BODY_RULE_NAME = "tableBody";
22
25
  export const BLOCK_LINE_RULE_NAME = "blockLine";
23
26
  export const CLASS_NAME_RULE_NAME = "className";
27
+ export const BLOCK_TEXT_RULE_NAME = "blockText";
24
28
  export const PLAIN_TEXT_RULE_NAME = "plainText";
25
29
  export const EMAIL_LINK_RULE_NAME = "emailLink";
26
30
  export const DIRECTIVES_RULE_NAME = "directives";
31
+ export const BLOCK_START_RULE_NAME = "blockStart";
27
32
  export const END_OF_LINE_RULE_NAME = "endOfLine";
28
33
  export const INLINE_TEXT_RULE_NAME = "inlineText";
29
34
  export const STRONG_TEXT_RULE_NAME = "strongText";
30
- export const SUB_DIVISION_RULE_NAME = "subDivision";
35
+ export const FOOTER_LINK_RULE_NAME = "footerLink";
31
36
  export const ORDERED_LIST_RULE_NAME = "orderedList";
32
37
  export const ORDERED_ITEM_RULE_NAME = "orderedItem";
33
38
  export const INDEX_HEADING_RULE_NAME = "indexHeading";
@@ -37,14 +42,14 @@ export const CONTENTS_ITEM_RULE_NAME = "contentsItem";
37
42
  export const CONTENTS_LIST_RULE_NAME = "contentsList";
38
43
  export const FOOTNOTE_LINK_RULE_NAME = "footnoteLink";
39
44
  export const TABLE_DIVIDER_RULE_NAME = "tableDivider";
40
- export const FOOTNOTES_ITEM_RULE_NAME = "footnotesItem";
45
+ export const VERTICAL_SPACE_RULE_NAME = "verticalSpace";
41
46
  export const TABLE_HEAD_ROW_RULE_NAME = "tableHeadRow";
42
47
  export const TABLE_BODY_ROW_RULE_NAME = "tableBodyRow";
43
48
  export const INLINE_LISTING_RULE_NAME = "inlineListing";
44
49
  export const UNORDERED_LIST_RULE_NAME = "unorderedList";
45
50
  export const UNORDERED_ITEM_RULE_NAME = "unorderedItem";
46
51
  export const FOOTNOTES_LIST_RULE_NAME = "footnotesList";
47
- export const VERTICAL_SPACE_RULE_NAME = "verticalSpace";
52
+ export const FOOTNOTES_ITEM_RULE_NAME = "footnotesItem";
48
53
  export const TABLE_HEAD_CELL_RULE_NAME = "tableHeadCell";
49
54
  export const TABLE_BODY_CELL_RULE_NAME = "tableBodyCell";
50
55
  export const EMPHASISED_TEXT_RULE_NAME = "emphasisedText";
@@ -54,15 +59,13 @@ export const EMBED_DIRECTIVE_RULE_NAME = "embedDirective";
54
59
  export const EMPTY_TABLE_CELL_RULE_NAME = "emptyTableCell";
55
60
  export const TERTIARY_HEADING_RULE_NAME = "tertiaryHeading";
56
61
  export const IGNORE_DIRECTIVE_RULE_NAME = "ignoreDirective";
57
- export const BLOCK_LISTING_END_RULE_NAME = "blockListingEnd";
58
62
  export const SECONDARY_HEADING_RULE_NAME = "secondaryHeading";
59
63
  export const INCLUDE_DIRECTIVE_RULE_NAME = "includeDirective";
60
64
  export const TABLE_CELL_DIVIDER_RULE_NAME = "tableCellDivider";
61
65
  export const QUATERNARY_HEADING_RULE_NAME = "quaternaryHeading";
62
66
  export const CONTENTS_DIRECTIVE_RULE_NAME = "contentsDirective";
63
- export const BLOCK_LISTING_START_RULE_NAME = "blockListingStart";
64
67
  export const FOOTNOTES_DIRECTIVE_RULE_NAME = "footnotesDirective";
65
- export const PAGE_NUMBER_DIRECTIVE_RULE_NAME = "pageNumber"; ///
68
+ export const PAGE_NUMBER_DIRECTIVE_RULE_NAME = "pageNumberDirective";
66
69
  export const STRONGLY_EMPHASISED_TEXT_RULE_NAME = "stronglyEmphasisedText";
67
70
 
68
71
  const ruleNames = {
@@ -73,12 +76,14 @@ const ruleNames = {
73
76
  TABLE_RULE_NAME,
74
77
  ERROR_RULE_NAME,
75
78
  ANCHOR_RULE_NAME,
79
+ TOPMOST_RULE_NAME,
76
80
  DIVISION_RULE_NAME,
77
81
  FOOTNOTE_RULE_NAME,
78
82
  NONSENSE_RULE_NAME,
79
83
  REFERENCE_RULE_NAME,
80
84
  PARAGRAPH_RULE_NAME,
81
85
  HYPERLINK_RULE_NAME,
86
+ BLOCK_END_RULE_NAME,
82
87
  INDEX_LIST_RULE_NAME,
83
88
  INDEX_ITEM_RULE_NAME,
84
89
  INDEX_LINK_RULE_NAME,
@@ -87,13 +92,14 @@ const ruleNames = {
87
92
  TABLE_BODY_RULE_NAME,
88
93
  BLOCK_LINE_RULE_NAME,
89
94
  CLASS_NAME_RULE_NAME,
95
+ BLOCK_TEXT_RULE_NAME,
90
96
  PLAIN_TEXT_RULE_NAME,
91
97
  EMAIL_LINK_RULE_NAME,
92
98
  DIRECTIVES_RULE_NAME,
93
99
  END_OF_LINE_RULE_NAME,
94
100
  INLINE_TEXT_RULE_NAME,
95
101
  STRONG_TEXT_RULE_NAME,
96
- SUB_DIVISION_RULE_NAME,
102
+ BLOCK_START_RULE_NAME,
97
103
  ORDERED_LIST_RULE_NAME,
98
104
  ORDERED_ITEM_RULE_NAME,
99
105
  INDEX_HEADING_RULE_NAME,
@@ -103,14 +109,14 @@ const ruleNames = {
103
109
  CONTENTS_LIST_RULE_NAME,
104
110
  FOOTNOTE_LINK_RULE_NAME,
105
111
  TABLE_DIVIDER_RULE_NAME,
106
- FOOTNOTES_ITEM_RULE_NAME,
112
+ VERTICAL_SPACE_RULE_NAME,
107
113
  TABLE_HEAD_ROW_RULE_NAME,
108
114
  TABLE_BODY_ROW_RULE_NAME,
109
115
  INLINE_LISTING_RULE_NAME,
110
116
  UNORDERED_LIST_RULE_NAME,
111
117
  UNORDERED_ITEM_RULE_NAME,
112
118
  FOOTNOTES_LIST_RULE_NAME,
113
- VERTICAL_SPACE_RULE_NAME,
119
+ FOOTNOTES_ITEM_RULE_NAME,
114
120
  TABLE_HEAD_CELL_RULE_NAME,
115
121
  TABLE_BODY_CELL_RULE_NAME,
116
122
  EMPHASISED_TEXT_RULE_NAME,
@@ -120,13 +126,11 @@ const ruleNames = {
120
126
  EMPTY_TABLE_CELL_RULE_NAME,
121
127
  TERTIARY_HEADING_RULE_NAME,
122
128
  IGNORE_DIRECTIVE_RULE_NAME,
123
- BLOCK_LISTING_END_RULE_NAME,
124
129
  SECONDARY_HEADING_RULE_NAME,
125
130
  INCLUDE_DIRECTIVE_RULE_NAME,
126
131
  TABLE_CELL_DIVIDER_RULE_NAME,
127
132
  QUATERNARY_HEADING_RULE_NAME,
128
133
  CONTENTS_DIRECTIVE_RULE_NAME,
129
- BLOCK_LISTING_START_RULE_NAME,
130
134
  FOOTNOTES_DIRECTIVE_RULE_NAME,
131
135
  PAGE_NUMBER_DIRECTIVE_RULE_NAME,
132
136
  STRONGLY_EMPHASISED_TEXT_RULE_NAME
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import ruleNames from "../ruleNames";
4
- import elementMap from "../elementMap";
4
+ import tagNameMap from "../map/tagName";
5
+ import classNameMap from "../map/className";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
8
  import { EMPTY_STRING } from "../constants";
@@ -10,13 +11,10 @@ import { remainingContentFromNodeTokensAndOffset } from "../utilities/content";
10
11
 
11
12
  const { STRONG_TEXT_RULE_NAME,
12
13
  ORDERED_LIST_RULE_NAME,
13
- UNORDERED_LIST_RULE_NAME,
14
14
  ORDERED_ITEM_RULE_NAME,
15
15
  UNORDERED_ITEM_RULE_NAME,
16
- STRONGLY_EMPHASISED_TEXT_RULE_NAME } = ruleNames,
17
- { tagName: strongTextTagName } = elementMap[STRONG_TEXT_RULE_NAME],
18
- { tagName: orderedListTagName } = elementMap[ORDERED_LIST_RULE_NAME],
19
- { tagName: unorderedListTagName } = elementMap[UNORDERED_LIST_RULE_NAME];
16
+ UNORDERED_LIST_RULE_NAME,
17
+ STRONGLY_EMPHASISED_TEXT_RULE_NAME } = ruleNames;
20
18
 
21
19
  const ruleNameValues = Object.values(ruleNames),
22
20
  ruleNameTerminalNodeQuery = nodeQuery("/selector/@rule-name");
@@ -74,7 +72,7 @@ function contentFromNodeAndTokens(node, tokens) {
74
72
  const ruleNameValuesIncludesRuleName = ruleNameValues.includes(ruleName);
75
73
 
76
74
  if (ruleNameValuesIncludesRuleName) {
77
- const { tagName, className } = elementMap[ruleName];
75
+ const tagName = tagNameMap[ruleName];
78
76
 
79
77
  if (tagName !== null) {
80
78
  content = `${content}${tagName}`;
@@ -82,24 +80,32 @@ function contentFromNodeAndTokens(node, tokens) {
82
80
 
83
81
  switch (ruleName) {
84
82
  case ORDERED_ITEM_RULE_NAME: {
85
- content = `${orderedListTagName} > ${content}`;
83
+ const tagName = tagNameMap[ORDERED_LIST_RULE_NAME],
84
+
85
+ content = `${tagName} > ${content}`;
86
86
 
87
87
  break;
88
88
  }
89
89
 
90
90
  case UNORDERED_ITEM_RULE_NAME: {
91
- content = `${unorderedListTagName} > ${content}`;
91
+ const tagName = tagNameMap[UNORDERED_LIST_RULE_NAME];
92
+
93
+ content = `${tagName} > ${content}`;
92
94
 
93
95
  break;
94
96
  }
95
97
 
96
98
  case STRONGLY_EMPHASISED_TEXT_RULE_NAME: {
97
- content = `${content} > ${strongTextTagName}`;
99
+ const tagName = tagNameMap[STRONG_TEXT_RULE_NAME];
100
+
101
+ content = `${content} > ${tagName}`;
98
102
 
99
103
  break;
100
104
  }
101
105
  }
102
106
 
107
+ const className = classNameMap[ruleName];
108
+
103
109
  if (className !== null) {
104
110
  content = `${content}.${className}`;
105
111
  }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import { Transform } from "occam-dom";
4
+
5
+ import ContentsLinkTransform from "../transform/contentsLink";
6
+ import ContentsItemMarkdownNode from "../node/markdown/contentsItem";
7
+
8
+ export default class ContentsItemTransform extends Transform {
9
+ getContentsItemMarkdownNode() {
10
+ const node = this.getNode(),
11
+ contentsItemMarkdownNode = node; ///
12
+
13
+ return contentsItemMarkdownNode;
14
+ }
15
+
16
+ static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
17
+ const transforms = [],
18
+ contentsLinkTransform = ContentsLinkTransform.fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context);
19
+
20
+ if (contentsLinkTransform !== null) {
21
+ const node = nestedHeadingMarkdownNode.getNode(),
22
+ headingMarkdownNode = node; ///
23
+
24
+ headingMarkdownNode.addAnchor(context);
25
+
26
+ const transform = contentsLinkTransform;
27
+
28
+ transforms.push(transform);
29
+ }
30
+
31
+ const childNestedNodes = nestedHeadingMarkdownNode.getChildNestedNodes(),
32
+ nestedHeadingMarkdownNodes = childNestedNodes, ///
33
+ nestedHeadingMarkdownNodesLength = nestedHeadingMarkdownNodes.length;
34
+
35
+ if (nestedHeadingMarkdownNodesLength > 0) {
36
+ const { ContentsListTransform } = ContentsItemTransform,
37
+ contentsListTransform = ContentsListTransform.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
38
+ transform = contentsListTransform; ///
39
+
40
+ transforms.push(transform);
41
+ }
42
+
43
+ const contentsItemMarkdownNode = ContentsItemMarkdownNode.fromTransforms(transforms),
44
+ node = contentsItemMarkdownNode, ///
45
+ tokens = [];
46
+
47
+ transforms.forEach((transform) => {
48
+ transform.getTokens(tokens);
49
+ });
50
+
51
+ const contentsItemTransform = Transform.fromNodeAndTokens(ContentsItemTransform, node, tokens);
52
+
53
+ return contentsItemTransform;
54
+ }
55
+ }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Replacement from "../replacement";
4
- import LineReplacement from "../replacement/line";
3
+ import { Transform } from "occam-dom";
4
+
5
+ import LineTransform from "../transform/line";
5
6
  import ContentsLinkMarkdownNode from "../node/markdown/contentsLink";
6
7
 
7
- export default class ContentsLinkReplacement extends Replacement {
8
+ export default class ContentsLinkTransform extends Transform {
8
9
  static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
9
- let contentsLinkReplacement = null;
10
+ let contentsLinkTransform = null;
10
11
 
11
12
  const node = nestedHeadingMarkdownNode.getNode(),
12
13
  headingMarkdownNode = node; ///
@@ -14,14 +15,14 @@ export default class ContentsLinkReplacement extends Replacement {
14
15
  if (headingMarkdownNode !== null) {
15
16
  const identifier = headingMarkdownNode.identifier(context),
16
17
  lineMarkdownNode = headingMarkdownNode.getLineMarkdownNode(),
17
- lineReplacement = LineReplacement.fromLineMarkdownNode(lineMarkdownNode, context),
18
- contentsLinkMarkdownNode = ContentsLinkMarkdownNode.fromLineReplacementAndIdentifier(lineReplacement, identifier),
18
+ lineTransform = LineTransform.fromLineMarkdownNode(lineMarkdownNode, context),
19
+ contentsLinkMarkdownNode = ContentsLinkMarkdownNode.fromLineTransformAndIdentifier(lineTransform, identifier),
19
20
  node = contentsLinkMarkdownNode, ///
20
- tokens = lineReplacement.getTokens();
21
+ tokens = lineTransform.getTokens();
21
22
 
22
- contentsLinkReplacement = Replacement.fromNodeAndTokens(ContentsLinkReplacement, node, tokens);
23
+ contentsLinkTransform = Transform.fromNodeAndTokens(ContentsLinkTransform, node, tokens);
23
24
  }
24
25
 
25
- return contentsLinkReplacement;
26
+ return contentsLinkTransform;
26
27
  }
27
28
  }