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,125 @@
1
+ "use strict";
2
+
3
+ import LineMarkdownNode from "../../node/markdown/line";
4
+ import PathMarkdownNode from "../../node/markdown/path";
5
+ import ImageMarkdownNode from "../../node/markdown/image";
6
+ import ErrorMarkdownNode from "../../node/markdown/error";
7
+ import AnchorMarkdownNode from "../../node/markdown/anchor";
8
+ import TopmostMarkdownNode from "../../node/markdown/topmost";
9
+ import DivisionMarkdownNode from "../../node/markdown/division";
10
+ import FootnoteMarkdownNode from "../../node/markdown/footnote";
11
+ import BlockEndMarkdownNode from "../../node/markdown/blockEnd";
12
+ import ParagraphMarkdownNode from "../../node/markdown/paragraph";
13
+ import ReferenceMarkdownNode from "../../node/markdown/reference";
14
+ import HyperlinkMarkdownNode from "../../node/markdown/hyperlink";
15
+ import IndexListMarkdownNode from "../../node/markdown/indexList";
16
+ import IndexLinkMarkdownNode from "../../node/markdown/indexLink";
17
+ import EmailLinkMarkdownNode from "../../node/markdown/emailLink";
18
+ import PlainTextMarkdownNode from "../../node/markdown/text/plain";
19
+ import BlockTextMarkdownNode from "../../node/markdown/text/block";
20
+ import ClassNameMarkdownNode from "../../node/markdown/className";
21
+ import BlockStartMarkdownNode from "../../node/markdown/blockStart";
22
+ import InlineTextMarkdownNode from "../../node/markdown/inlineText";
23
+ import StrongTextMarkdownNode from "../../node/markdown/strongText";
24
+ import OrderedItemMarkdownNode from "../../node/markdown/item/ordered";
25
+ import BlockListingMarkdownNode from "../../node/markdown/blockListing";
26
+ import ContentsLinkMarkdownNode from "../../node/markdown/contentsLink";
27
+ import ContentsItemMarkdownNode from "../../node/markdown/contentsItem";
28
+ import ContentsListMarkdownNode from "../../node/markdown/contentsList";
29
+ import FootnoteLinkMarkdownNode from "../../node/markdown/footnoteLink";
30
+ import InlineListingMarkdownNode from "../../node/markdown/inlineListing";
31
+ import FootnotesItemMarkdownNode from "../../node/markdown/footnotesItem";
32
+ import FootnotesListMarkdownNode from "../../node/markdown/footnotesList";
33
+ import EmphasisedTextMarkdownNode from "../../node/markdown/emphasisedText";
34
+ import PrimaryHeadingMarkdownNode from "../../node/markdown/heading/primary";
35
+ import EmbedDirectiveMarkdownNode from "../../node/markdown/directive/embee";
36
+ import TertiaryHeadingMarkdownNode from "../../node/markdown/heading/tertiary";
37
+ import SecondaryHeadingMarkdownNode from "../../node/markdown/heading/secondary";
38
+ import IncludeDirectiveMarkdownNode from "../../node/markdown/directive/include";
39
+ import QuaternaryHeadingMarkdownNode from "../../node/markdown/heading/quaternary";
40
+ import PageNumberDirectiveMarkdownNode from "../../node/markdown/directive/pageNumber";
41
+ import StronglyEmphasisedTextMarkdownNode from "../../node/markdown/stronglyEmphasisedText";
42
+
43
+ import { LINE_RULE_NAME,
44
+ PATH_RULE_NAME,
45
+ IMAGE_RULE_NAME,
46
+ ERROR_RULE_NAME,
47
+ ANCHOR_RULE_NAME,
48
+ TOPMOST_RULE_NAME,
49
+ DIVISION_RULE_NAME,
50
+ FOOTNOTE_RULE_NAME,
51
+ BLOCK_END_RULE_NAME,
52
+ PARAGRAPH_RULE_NAME,
53
+ REFERENCE_RULE_NAME,
54
+ HYPERLINK_RULE_NAME,
55
+ INDEX_LIST_RULE_NAME,
56
+ INDEX_LINK_RULE_NAME,
57
+ EMAIL_LINK_RULE_NAME,
58
+ PLAIN_TEXT_RULE_NAME,
59
+ BLOCK_TEXT_RULE_NAME,
60
+ CLASS_NAME_RULE_NAME,
61
+ BLOCK_START_RULE_NAME,
62
+ INLINE_TEXT_RULE_NAME,
63
+ STRONG_TEXT_RULE_NAME,
64
+ ORDERED_ITEM_RULE_NAME,
65
+ BLOCK_LISTING_RULE_NAME,
66
+ CONTENTS_LINK_RULE_NAME,
67
+ CONTENTS_ITEM_RULE_NAME,
68
+ CONTENTS_LIST_RULE_NAME,
69
+ FOOTNOTE_LINK_RULE_NAME,
70
+ INLINE_LISTING_RULE_NAME,
71
+ FOOTNOTES_ITEM_RULE_NAME,
72
+ FOOTNOTES_LIST_RULE_NAME,
73
+ EMPHASISED_TEXT_RULE_NAME,
74
+ PRIMARY_HEADING_RULE_NAME,
75
+ EMBED_DIRECTIVE_RULE_NAME,
76
+ TERTIARY_HEADING_RULE_NAME,
77
+ SECONDARY_HEADING_RULE_NAME,
78
+ INCLUDE_DIRECTIVE_RULE_NAME,
79
+ QUATERNARY_HEADING_RULE_NAME,
80
+ PAGE_NUMBER_DIRECTIVE_RULE_NAME,
81
+ STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "../../ruleNames";
82
+
83
+ const markdownNodeMap = {
84
+ [LINE_RULE_NAME]: LineMarkdownNode,
85
+ [PATH_RULE_NAME]: PathMarkdownNode,
86
+ [IMAGE_RULE_NAME]: ImageMarkdownNode,
87
+ [ERROR_RULE_NAME]: ErrorMarkdownNode,
88
+ [ANCHOR_RULE_NAME]: AnchorMarkdownNode,
89
+ [TOPMOST_RULE_NAME]: TopmostMarkdownNode,
90
+ [DIVISION_RULE_NAME]: DivisionMarkdownNode,
91
+ [FOOTNOTE_RULE_NAME]: FootnoteMarkdownNode,
92
+ [BLOCK_END_RULE_NAME]: BlockEndMarkdownNode,
93
+ [REFERENCE_RULE_NAME]: ReferenceMarkdownNode,
94
+ [HYPERLINK_RULE_NAME]: HyperlinkMarkdownNode,
95
+ [PARAGRAPH_RULE_NAME]: ParagraphMarkdownNode,
96
+ [INDEX_LIST_RULE_NAME]: IndexListMarkdownNode,
97
+ [INDEX_LINK_RULE_NAME]: IndexLinkMarkdownNode,
98
+ [EMAIL_LINK_RULE_NAME]: EmailLinkMarkdownNode,
99
+ [PLAIN_TEXT_RULE_NAME]: PlainTextMarkdownNode,
100
+ [BLOCK_TEXT_RULE_NAME]: BlockTextMarkdownNode,
101
+ [CLASS_NAME_RULE_NAME]: ClassNameMarkdownNode,
102
+ [BLOCK_START_RULE_NAME]: BlockStartMarkdownNode,
103
+ [INLINE_TEXT_RULE_NAME]: InlineTextMarkdownNode,
104
+ [STRONG_TEXT_RULE_NAME]: StrongTextMarkdownNode,
105
+ [ORDERED_ITEM_RULE_NAME]: OrderedItemMarkdownNode,
106
+ [CONTENTS_LINK_RULE_NAME]: ContentsLinkMarkdownNode,
107
+ [BLOCK_LISTING_RULE_NAME]: BlockListingMarkdownNode,
108
+ [CONTENTS_ITEM_RULE_NAME]: ContentsItemMarkdownNode,
109
+ [CONTENTS_LIST_RULE_NAME]: ContentsListMarkdownNode,
110
+ [FOOTNOTE_LINK_RULE_NAME]: FootnoteLinkMarkdownNode,
111
+ [INLINE_LISTING_RULE_NAME]: InlineListingMarkdownNode,
112
+ [FOOTNOTES_ITEM_RULE_NAME]: FootnotesItemMarkdownNode,
113
+ [FOOTNOTES_LIST_RULE_NAME]: FootnotesListMarkdownNode,
114
+ [EMPHASISED_TEXT_RULE_NAME]: EmphasisedTextMarkdownNode,
115
+ [PRIMARY_HEADING_RULE_NAME]: PrimaryHeadingMarkdownNode,
116
+ [EMBED_DIRECTIVE_RULE_NAME]: EmbedDirectiveMarkdownNode,
117
+ [TERTIARY_HEADING_RULE_NAME]: TertiaryHeadingMarkdownNode,
118
+ [SECONDARY_HEADING_RULE_NAME]: SecondaryHeadingMarkdownNode,
119
+ [INCLUDE_DIRECTIVE_RULE_NAME]: IncludeDirectiveMarkdownNode,
120
+ [QUATERNARY_HEADING_RULE_NAME]: QuaternaryHeadingMarkdownNode,
121
+ [PAGE_NUMBER_DIRECTIVE_RULE_NAME]: PageNumberDirectiveMarkdownNode,
122
+ [STRONGLY_EMPHASISED_TEXT_RULE_NAME]: StronglyEmphasisedTextMarkdownNode
123
+ };
124
+
125
+ export default markdownNodeMap;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import htmlNodeMap from "../map/node/html";
4
+
5
+ import { ruleNames } from "../map/node/html";
6
+
7
+ const tagNameMap = {};
8
+
9
+ ruleNames.forEach((ruleName) => {
10
+ const Class = htmlNodeMap[ruleName],
11
+ { tagName } = Class;
12
+
13
+ tagNameMap[ruleName] = tagName;
14
+ });
15
+
16
+ export default tagNameMap;
@@ -2,10 +2,10 @@
2
2
 
3
3
  const bnf = `
4
4
 
5
- division ::= ( subDivision | endOfLine | error )+ ;
5
+ markdown ::= ( division | endOfLine | error )+ ;
6
6
 
7
7
 
8
- subDivision ::= verticalSpace ( directives
8
+ division ::= verticalSpace ( directives
9
9
 
10
10
  | primaryHeading
11
11
 
@@ -41,9 +41,7 @@ const bnf = `
41
41
  ;
42
42
 
43
43
 
44
- directives ::= pageNumber
45
-
46
- | indexDirective
44
+ directives ::= indexDirective
47
45
 
48
46
  | ignoreDirective
49
47
 
@@ -51,6 +49,8 @@ const bnf = `
51
49
 
52
50
  | footnotesDirective
53
51
 
52
+ | pageNumberDirective
53
+
54
54
  | embedDirective ( endOfLine embedDirective )*
55
55
 
56
56
  | includeDirective ( endOfLine includeDirective )*
@@ -82,15 +82,12 @@ const bnf = `
82
82
  unorderedList ::= unorderedItem ( endOfLine unorderedItem )* ;
83
83
 
84
84
 
85
- blockListing ::= blockListingStart ( blockLine | endOfLine )+ blockListingEnd ;
85
+ blockListing ::= blockStart blockLine* blockEnd ;
86
86
 
87
87
 
88
88
  paragraph ::= line ( endOfLine line )* ;
89
89
 
90
90
 
91
- pageNumber ::= "@pageNumber" ;
92
-
93
-
94
91
  indexDirective ::= "@index" ;
95
92
 
96
93
 
@@ -109,6 +106,9 @@ const bnf = `
109
106
  footnotesDirective ::= "@footnotes" ;
110
107
 
111
108
 
109
+ pageNumberDirective ::= "@pageNumber" ;
110
+
111
+
112
112
  nonsense ::= ( [escaped] | [number] | [identifier] | [word] | [special] | [unassigned] )+ ;
113
113
 
114
114
 
@@ -124,11 +124,8 @@ const bnf = `
124
124
  unorderedItem ::= [bullet] line ( endOfLine line )* ;
125
125
 
126
126
 
127
- blockListingStart ::= [backticks] className? <END_OF_LINE> ;
128
-
129
-
130
- blockListingEnd ::= [backticks] ;
131
-
127
+ blockLine. ::= blockText* endOfLine ;
128
+
132
129
 
133
130
  tableHeadRow ::= tableCellDivider tableHeadCell+ ;
134
131
 
@@ -156,34 +153,53 @@ const bnf = `
156
153
  tableCell ::= line tableCellDivider ;
157
154
 
158
155
 
159
- tableDivider ::= [dashes] ;
160
-
156
+ contentsList ::= contentsItem+ ;
157
+
158
+
159
+ contentsItem ::= contentsLink
161
160
 
162
- tableCellDivider ::= [vertical-bar] ;
161
+ | contentsLink? contentsList
162
+
163
+ ;
164
+
165
+
166
+ contentsLink ::= line ;
167
+
168
+
169
+ footnotesList ::= footnotesItem+ ;
170
+
171
+
172
+ footnotesItem ::= anchor paragraph ;
173
+
174
+
175
+ indexHeading ::= line ;
163
176
 
164
177
 
165
- line. ::= ( footnoteLink
178
+ indexList ::= indexItem+ ;
179
+
180
+
181
+ indexItem ::= line... comma indexLink ( comma indexLink )* ;
182
+
183
+
184
+ line. ::= ( inlineListing
166
185
 
186
+ | footnoteLink
187
+
167
188
  | emailLink
168
189
 
169
190
  | hyperlink
170
191
 
171
192
  | image
172
193
 
173
- | inlineListing
194
+ | plainText
174
195
 
175
- | stronglyEmphasisedText
196
+ | strongText
176
197
 
177
198
  | emphasisedText
178
199
 
179
- | strongText
180
-
181
- | plainText )+ ;
182
-
200
+ | stronglyEmphasisedText )+ ;
183
201
 
184
- footnoteLink. ::= [link] ;
185
202
 
186
-
187
203
  emailLink. ::= "[" inlineText... "]"<NO_WHITESPACE>"(" [email-address] ")"
188
204
 
189
205
  | [email-address]
@@ -201,29 +217,34 @@ const bnf = `
201
217
  image. ::= "![" inlineText... "]"<NO_WHITESPACE>"(" path ")" ;
202
218
 
203
219
 
204
- path ::= [path] ;
220
+ inlineText ::= plainText+ ;
221
+
222
+
223
+ strongText ::= "***" inlineText "***" ;
205
224
 
206
225
 
207
- inlineListing ::= [backticked-literal] ;
208
-
226
+ emphasisedText ::= "**" inlineText "**" ;
227
+
209
228
 
210
229
  stronglyEmphasisedText ::= "****" inlineText "****" ;
211
230
 
212
231
 
213
- emphasisedText ::= "**" inlineText "**" ;
232
+ className ::= <NO_WHITESPACE>[identifier] ;
233
+
214
234
 
235
+ blockStart ::= [backticks] className? <END_OF_LINE> ;
215
236
 
216
- strongText ::= "***" inlineText "***" ;
217
237
 
238
+ blockEnd ::= [backticks] ;
218
239
 
219
- blockLine. ::= ( plainText
220
-
221
- | [dashes]
222
-
223
- | [vertical-bar] )* ;
240
+
241
+ footnoteLink. ::= [link] ;
224
242
 
225
243
 
226
- inlineText ::= plainText+ ;
244
+ tableCellDivider ::= [vertical-bar] ;
245
+
246
+
247
+ tableDivider ::= [dashes] ;
227
248
 
228
249
 
229
250
  plainText ::= [escaped]
@@ -247,41 +268,41 @@ const bnf = `
247
268
  ;
248
269
 
249
270
 
250
- reference. ::= [reference] ;
251
-
252
-
253
- className ::= <NO_WHITESPACE>[identifier] ;
254
-
255
-
256
- contentsList ::= contentsItem+ ;
257
-
258
-
259
- contentsItem ::= contentsLink
260
-
261
- | contentsLink? contentsList
271
+ blockText ::= [escaped]
272
+
273
+ | [number]
274
+
275
+ | [identifier]
276
+
277
+ | [email-address]
278
+
279
+ | [url]
280
+
281
+ | [path]
282
+
283
+ | [word]
284
+
285
+ | [special]
286
+
287
+ | [unassigned]
288
+
289
+ | [dashes]
290
+
291
+ | [vertical-bar]
262
292
 
263
293
  ;
264
-
265
-
266
- contentsLink ::= line ;
267
-
268
-
269
- footnotesList ::= footnotesItem+ ;
270
-
271
-
272
- footnotesItem ::= anchor paragraph ;
273
-
274
-
275
- indexHeading ::= line ;
276
294
 
295
+
296
+ inlineListing ::= [backticked-literal] ;
277
297
 
278
- indexList ::= indexItem+ ;
279
298
 
299
+ reference. ::= [reference] ;
300
+
280
301
 
281
- indexItem ::= line... comma indexLink ( comma indexLink )* ;
302
+ indexLink ::= [number] ;
282
303
 
283
304
 
284
- indexLink ::= [number] ;
305
+ path ::= [path] ;
285
306
 
286
307
 
287
308
  comma. ::= "," ;
@@ -3,10 +3,12 @@
3
3
  import { CommonParser } from "occam-parsers";
4
4
 
5
5
  import bnf from "./bnf";
6
- import nodeMap from "../nodeMap";
6
+ import markdownNodeMap from "../map/node/markdown";
7
7
 
8
8
  import { setNonTerminalNodes } from "../utilities/parser";
9
9
 
10
+ const nodeMap = markdownNodeMap; ///
11
+
10
12
  export default class MarkdownParser extends CommonParser {
11
13
  static bnf = bnf;
12
14
 
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import elementMap from "../elementMap";
3
+ import tagNameMap from "../map/tagName";
4
4
 
5
- import { ruleNamesExpressionFromElementMap } from "../utilities/entries";
5
+ import { ruleNamesExpressionFromTagNameMap } from "../utilities/entries";
6
6
 
7
- const ruleNamesExpression = ruleNamesExpressionFromElementMap(elementMap);
7
+ const ruleNamesExpression = ruleNamesExpressionFromTagNameMap(tagNameMap);
8
8
 
9
9
  const entries = [
10
10
  {
@@ -1,35 +1,13 @@
1
1
  "use strict";
2
2
 
3
- function appendChildNode(appendedChildNode) {
4
- const multiplicity = this.getMultiplicity(),
5
- startIndex = multiplicity, ///
6
- addedChildNode = appendedChildNode; ///
7
-
8
- this.addChildNode(addedChildNode, startIndex);
9
- }
10
-
11
- function prependChildNode(prependedChildNode) {
12
- const startIndex = 0,
13
- addedChildNode = prependedChildNode; ///
14
-
15
- this.addChildNode(addedChildNode, startIndex);
16
- }
17
-
18
- function addChildNodeAfter(existingChildNode, addedChildNode) {
19
- const addedChildNodes = [
20
- addedChildNode
21
- ];
3
+ function filterChildNode(callback) {
4
+ this.forEachChildNode((childNode) => {
5
+ const result = callback(childNode);
22
6
 
23
- this.addChildNodesAfter(existingChildNode, addedChildNodes);
24
- }
25
-
26
- function addChildNodesAfter(existingChildNode, addedChildNodes) {
27
- const childNode = existingChildNode, ///
28
- index = this.indexOfChildNode(childNode),
29
- startIndex = index + 1,
30
- deleteCount = 0;
31
-
32
- this.spliceChildNodes(startIndex, deleteCount, addedChildNodes);
7
+ if (!result) {
8
+ this.removeChildNode(childNode);
9
+ }
10
+ });
33
11
  }
34
12
 
35
13
  function fromFirstChildNode(callback) {
@@ -124,16 +102,33 @@ function fromSecondLastChildNode(callback) {
124
102
  return result;
125
103
  }
126
104
 
105
+ function fromThirdLastChildNode(callback) {
106
+ let result;
107
+
108
+ const multiplicity = this.getMultiplicity(),
109
+ thirdLastIndex = multiplicity - 2;
110
+
111
+ this.backwardsSomeChildNode((childNode, index) => {
112
+ if (index === thirdLastIndex) {
113
+ const thirdChildNode = childNode; ///
114
+
115
+ result = callback(thirdChildNode);
116
+
117
+ return true;
118
+ }
119
+ });
120
+
121
+ return result;
122
+ }
123
+
127
124
  const nodeMixins = {
128
- appendChildNode,
129
- prependChildNode,
130
- addChildNodeAfter,
131
- addChildNodesAfter,
125
+ filterChildNode,
132
126
  fromFirstChildNode,
133
127
  fromSecondChildNode,
134
128
  fromThirdChildNode,
135
129
  fromFirstLastChildNode,
136
- fromSecondLastChildNode
130
+ fromSecondLastChildNode,
131
+ fromThirdLastChildNode
137
132
  };
138
133
 
139
134
  export default nodeMixins;
@@ -5,8 +5,6 @@ import HTMLNode from "../../node/html";
5
5
  import { ID_ATTRIBUTE_NAME } from "../../attributeNames";
6
6
 
7
7
  export default class AnchorHTMLNode extends HTMLNode {
8
- content(context) { return this.outerNode.content(context); }
9
-
10
8
  attributeName(context) {
11
9
  const attributeName = ID_ATTRIBUTE_NAME;
12
10
 
@@ -40,13 +38,36 @@ export default class AnchorHTMLNode extends HTMLNode {
40
38
  return html;
41
39
  }
42
40
 
43
- childNodesAsHTML(indent, context) {
41
+ createDOMElement(context) {
42
+ let domElement;
43
+
44
44
  const content = this.content(context),
45
- childNodesHTML = content; ///
45
+ textNode = document.createTextNode(content);
46
+
47
+ domElement = super.createDOMElement(context)
48
+
49
+ const parentDOMElement = domElement; ///
50
+
51
+ domElement = textNode; ///
46
52
 
47
- return childNodesHTML;
53
+ parentDOMElement.appendChild(domElement);
54
+
55
+ domElement = parentDOMElement; ///
56
+
57
+ return domElement;
48
58
  }
49
59
 
60
+ // childNodesAsHTML(indent, context) {
61
+ // const content = this.content(context),
62
+ // childNodesHTML = content; ///
63
+ //
64
+ // return childNodesHTML;
65
+ // }
66
+
67
+ static tagName = "a";
68
+
69
+ static className = "anchor";
70
+
50
71
  static fromNothing() { return HTMLNode.fromNothing(AnchorHTMLNode); }
51
72
 
52
73
  static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(AnchorHTMLNode, outerNode); }
@@ -2,25 +2,76 @@
2
2
 
3
3
  import HTMLNode from "../../node/html";
4
4
 
5
+ import { EMPTY_STRING, CARRIAGE_RETURN } from "../../constants";
6
+
5
7
  export default class BlockLineHTMLNode extends HTMLNode {
6
- content(context) { return this.outerNode.content(context); }
8
+ mount(parentDOMElement, siblingDOMElement, context) {
9
+ super.mount(parentDOMElement, siblingDOMElement, context);
10
+
11
+ let domElement;
12
+
13
+ domElement = this.getDOMElement();
14
+
15
+ parentDOMElement = domElement;
16
+
17
+ siblingDOMElement = null;
18
+
19
+ const content = CARRIAGE_RETURN,
20
+ textNode = document.createTextNode(content);
21
+
22
+ domElement = textNode;
23
+
24
+ parentDOMElement.insertBefore(domElement, siblingDOMElement)
25
+ }
26
+
27
+ unmount(parentDOMElement, context) {
28
+ {
29
+ let domElement;
30
+
31
+ domElement = this.getDOMElement();
32
+
33
+ const parentDOMElement = domElement, ///
34
+ lastChild = domElement.lastChild
35
+
36
+ domElement = lastChild; ///
37
+
38
+ parentDOMElement.removeChild(domElement);
39
+ }
40
+
41
+ super.unmount(parentDOMElement, context);
42
+ }
7
43
 
8
44
  asHTML(indent, context) {
45
+ let html;
46
+
9
47
  const childNodesHTML = this.childNodesAsHTML(indent, context),
10
48
  startingTag = this.startingTag(context),
11
- closingTag = this.closingTag(context),
12
- html = `${startingTag}${childNodesHTML}${closingTag}`;
49
+ closingTag = this.closingTag(context);
50
+
51
+ html = `${startingTag}${childNodesHTML}${closingTag}
52
+ `;
13
53
 
14
54
  return html;
15
55
  }
16
56
 
17
- childNodesAsHTML(indent, context) {
18
- const content = this.content(context),
19
- childNodesHTML = content; ///
57
+ childNodesAsPlainText(context) {
58
+ const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode) => {
59
+ const childNodePlainText = childNode.asPlainText(context);
20
60
 
21
- return childNodesHTML;
61
+ childNodesPlainText = `${childNodesPlainText}${childNodePlainText}`;
62
+
63
+ return childNodesPlainText;
64
+ }, EMPTY_STRING);
65
+
66
+ return childNodesPlainText;
22
67
  }
23
68
 
69
+ static lines = 2;
70
+
71
+ static tagName = "span";
72
+
73
+ static className = "block-line";
74
+
24
75
  static fromNothing() { return HTMLNode.fromNothing(BlockLineHTMLNode); }
25
76
 
26
77
  static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(BlockLineHTMLNode, outerNode); }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import HTMLNode from "../../node/html";
4
+
5
+ export default class DivisionHTMLNode extends HTMLNode {
6
+ className(context) { return this.outerNode.className(context); }
7
+
8
+ static tagName = "div";
9
+
10
+ static className = null;
11
+
12
+ static fromNothing() { return HTMLNode.fromNothing(DivisionHTMLNode); }
13
+
14
+ static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(DivisionHTMLNode, outerNode); }
15
+ }