highmark-markdown 0.0.383 → 0.0.388

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 (70) hide show
  1. package/example.js +2972 -865
  2. package/lib/defaultMarkdownStyle.js +2 -2
  3. package/lib/elementMap.js +4 -4
  4. package/lib/example/constants.js +6 -2
  5. package/lib/example/view.js +5 -4
  6. package/lib/markdown/bnf.js +2 -2
  7. package/lib/mixins/node.js +6 -1
  8. package/lib/node/markdown/contentsItem.js +8 -30
  9. package/lib/node/markdown/contentsLink.js +9 -30
  10. package/lib/node/markdown/contentsList.js +8 -33
  11. package/lib/node/markdown/directive/embee.js +8 -8
  12. package/lib/node/markdown/division.js +90 -103
  13. package/lib/node/markdown/{footnoteItem.js → footnotesItem.js} +12 -12
  14. package/lib/node/markdown/footnotesList.js +9 -47
  15. package/lib/node/markdown/subDivision.js +2 -3
  16. package/lib/node/markdown.js +25 -1
  17. package/lib/nodeMap.js +6 -3
  18. package/lib/replacement/contentsItem.js +145 -0
  19. package/lib/replacement/contentsLink.js +157 -0
  20. package/lib/replacement/contentsList.js +212 -0
  21. package/lib/replacement/footnote.js +122 -0
  22. package/lib/replacement/footnotesItem.js +140 -0
  23. package/lib/replacement/footnotesList.js +189 -0
  24. package/lib/replacement/imported.js +151 -0
  25. package/lib/replacement/line.js +127 -0
  26. package/lib/replacement/subDivision/contentsDirective.js +126 -0
  27. package/lib/replacement/subDivision/footnote.js +126 -0
  28. package/lib/replacement/subDivision/footnotesDirective.js +126 -0
  29. package/lib/replacement/subDivision/pageNumberDirective.js +126 -0
  30. package/lib/replacement/subDivision.js +175 -0
  31. package/lib/replacement.js +139 -46
  32. package/lib/ruleNames.js +6 -6
  33. package/lib/utilities/markdown.js +8 -8
  34. package/lib/utilities/node.js +1 -72
  35. package/lib/utilities/replacement.js +104 -0
  36. package/package.json +1 -1
  37. package/src/defaultMarkdownStyle.js +20 -1
  38. package/src/elementMap.js +5 -5
  39. package/src/example/constants.js +2 -1
  40. package/src/example/view.js +13 -12
  41. package/src/markdown/bnf.js +23 -9
  42. package/src/mixins/node.js +10 -0
  43. package/src/node/markdown/contentsItem.js +7 -38
  44. package/src/node/markdown/contentsLink.js +8 -41
  45. package/src/node/markdown/contentsList.js +7 -39
  46. package/src/node/markdown/directive/embee.js +9 -9
  47. package/src/node/markdown/division.js +90 -158
  48. package/src/node/markdown/{footnoteItem.js → footnotesItem.js} +5 -5
  49. package/src/node/markdown/footnotesList.js +10 -78
  50. package/src/node/markdown/subDivision.js +1 -5
  51. package/src/node/markdown.js +28 -0
  52. package/src/nodeMap.js +12 -3
  53. package/src/replacement/contentsItem.js +49 -0
  54. package/src/replacement/contentsLink.js +29 -0
  55. package/src/replacement/contentsList.js +111 -0
  56. package/src/replacement/footnote.js +16 -0
  57. package/src/replacement/footnotesItem.js +38 -0
  58. package/src/replacement/footnotesList.js +73 -0
  59. package/src/replacement/imported.js +13 -0
  60. package/src/replacement/line.js +14 -0
  61. package/src/replacement/subDivision/contentsDirective.js +20 -0
  62. package/src/replacement/subDivision/footnote.js +20 -0
  63. package/src/replacement/subDivision/footnotesDirective.js +20 -0
  64. package/src/replacement/subDivision/pageNumberDirective.js +20 -0
  65. package/src/replacement/subDivision.js +42 -0
  66. package/src/replacement.js +108 -53
  67. package/src/ruleNames.js +2 -2
  68. package/src/utilities/markdown.js +9 -9
  69. package/src/utilities/node.js +0 -48
  70. package/src/utilities/replacement.js +66 -0
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ appendNode: function() {
13
+ return appendNode;
14
+ },
15
+ appendTokens: function() {
16
+ return appendTokens;
17
+ },
18
+ removeNode: function() {
19
+ return removeNode;
20
+ },
21
+ removeNodes: function() {
22
+ return removeNodes;
23
+ },
24
+ removeTokens: function() {
25
+ return removeTokens;
26
+ },
27
+ replaceNode: function() {
28
+ return replaceNode;
29
+ },
30
+ replaceNodes: function() {
31
+ return replaceNodes;
32
+ },
33
+ replaceTokens: function() {
34
+ return replaceTokens;
35
+ }
36
+ });
37
+ var _node = require("../utilities/node");
38
+ function _array_like_to_array(arr, len) {
39
+ if (len == null || len > arr.length) len = arr.length;
40
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
41
+ return arr2;
42
+ }
43
+ function _array_without_holes(arr) {
44
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
45
+ }
46
+ function _iterable_to_array(iter) {
47
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
48
+ }
49
+ function _non_iterable_spread() {
50
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
51
+ }
52
+ function _to_consumable_array(arr) {
53
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
54
+ }
55
+ function _unsupported_iterable_to_array(o, minLen) {
56
+ if (!o) return;
57
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
58
+ var n = Object.prototype.toString.call(o).slice(8, -1);
59
+ if (n === "Object" && o.constructor) n = o.constructor.name;
60
+ if (n === "Map" || n === "Set") return Array.from(n);
61
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
62
+ }
63
+ function appendNode(replacementNode, parentNode) {
64
+ var childNode = replacementNode; ///
65
+ parentNode.appendChildNode(childNode);
66
+ }
67
+ function removeNode(removedNode, parentNode) {
68
+ var removedChildNode = removedNode; ///
69
+ parentNode.removeChildNode(removedChildNode);
70
+ }
71
+ function removeNodes(removedNodes, parentNode) {
72
+ var removedChildNodes = removedNodes; ///
73
+ parentNode.removeChildNodes(removedChildNodes);
74
+ }
75
+ function replaceNode(replacementNode, replacedNode, parentNode) {
76
+ var replacedChildNode = replacedNode, replacementChildNode = replacementNode; ///
77
+ parentNode.replaceChildNode(replacedChildNode, replacementChildNode);
78
+ }
79
+ function replaceNodes(replacementNodes, replacedNode, parentNode) {
80
+ var replacedChildNode = replacedNode, replacementChildNodes = replacementNodes; ///
81
+ parentNode.replaceChildNodes(replacedChildNode, replacementChildNodes);
82
+ }
83
+ function appendTokens(replacementTokens, parentNode, tokens) {
84
+ var _tokens;
85
+ var node = parentNode, trailingIndex = (0, _node.trailingIndexFromNodeAndTokens)(node, tokens), start = trailingIndex + 1, deleteCount = 0;
86
+ (_tokens = tokens).splice.apply(_tokens, [
87
+ start,
88
+ deleteCount
89
+ ].concat(_to_consumable_array(replacementTokens)));
90
+ }
91
+ function removeTokens(removedNode, tokens) {
92
+ var node = removedNode, leadingIndex = (0, _node.leadingIndexFromNodeAndTokens)(node, tokens), trailingIndex = (0, _node.trailingIndexFromNodeAndTokens)(node, tokens), start = leadingIndex, end = trailingIndex + 1, deleteCount = end - start;
93
+ tokens.splice(start, deleteCount);
94
+ }
95
+ function replaceTokens(replacementTokens, replacedNode, tokens) {
96
+ var _tokens;
97
+ var node = replacedNode, leadingIndex = (0, _node.leadingIndexFromNodeAndTokens)(node, tokens), trailingIndex = (0, _node.trailingIndexFromNodeAndTokens)(node, tokens), start = leadingIndex, end = trailingIndex + 1, deleteCount = end - start;
98
+ (_tokens = tokens).splice.apply(_tokens, [
99
+ start,
100
+ deleteCount
101
+ ].concat(_to_consumable_array(replacementTokens)));
102
+ }
103
+
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVwbGFjZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxlYWRpbmdJbmRleEZyb21Ob2RlQW5kVG9rZW5zLCB0cmFpbGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZE5vZGUocmVwbGFjZW1lbnROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IGNoaWxkTm9kZSA9IHJlcGxhY2VtZW50Tm9kZTsgIC8vL1xuXG4gIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGROb2RlKGNoaWxkTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOb2RlKHJlbW92ZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGUgPSByZW1vdmVkTm9kZTsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZE5vZGUocmVtb3ZlZENoaWxkTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOb2RlcyhyZW1vdmVkTm9kZXMsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVtb3ZlZENoaWxkTm9kZXMgPSByZW1vdmVkTm9kZXM7IC8vL1xuXG4gIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGROb2RlcyhyZW1vdmVkQ2hpbGROb2Rlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlTm9kZShyZXBsYWNlbWVudE5vZGUsIHJlcGxhY2VkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZXBsYWNlZENoaWxkTm9kZSA9IHJlcGxhY2VkTm9kZSwgIC8vL1xuICAgICAgICByZXBsYWNlbWVudENoaWxkTm9kZSA9IHJlcGxhY2VtZW50Tm9kZTsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGROb2RlKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlTm9kZXMocmVwbGFjZW1lbnROb2RlcywgcmVwbGFjZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIHJlcGxhY2VtZW50Q2hpbGROb2RlcyA9IHJlcGxhY2VtZW50Tm9kZXM7IC8vL1xuXG4gIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkTm9kZXMocmVwbGFjZWRDaGlsZE5vZGUsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRUb2tlbnMocmVwbGFjZW1lbnRUb2tlbnMsIHBhcmVudE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcGFyZW50Tm9kZSwgLy8vXG4gICAgICAgIHRyYWlsaW5nSW5kZXggPSB0cmFpbGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSB0cmFpbGluZ0luZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSAwO1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5yZXBsYWNlbWVudFRva2Vucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUb2tlbnMocmVtb3ZlZE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcmVtb3ZlZE5vZGUsICAvLy9cbiAgICAgICAgbGVhZGluZ0luZGV4ID0gbGVhZGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKSxcbiAgICAgICAgdHJhaWxpbmdJbmRleCA9IHRyYWlsaW5nSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxlYWRpbmdJbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IHRyYWlsaW5nSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IGVuZCAtIHN0YXJ0O1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VUb2tlbnMocmVwbGFjZW1lbnRUb2tlbnMsIHJlcGxhY2VkTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSByZXBsYWNlZE5vZGUsICAvLy9cbiAgICAgICAgbGVhZGluZ0luZGV4ID0gbGVhZGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKSxcbiAgICAgICAgdHJhaWxpbmdJbmRleCA9IHRyYWlsaW5nSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxlYWRpbmdJbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IHRyYWlsaW5nSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IGVuZCAtIHN0YXJ0O1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5yZXBsYWNlbWVudFRva2Vucyk7XG59XG4iXSwibmFtZXMiOlsiYXBwZW5kTm9kZSIsImFwcGVuZFRva2VucyIsInJlbW92ZU5vZGUiLCJyZW1vdmVOb2RlcyIsInJlbW92ZVRva2VucyIsInJlcGxhY2VOb2RlIiwicmVwbGFjZU5vZGVzIiwicmVwbGFjZVRva2VucyIsInJlcGxhY2VtZW50Tm9kZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGUiLCJhcHBlbmRDaGlsZE5vZGUiLCJyZW1vdmVkTm9kZSIsInJlbW92ZWRDaGlsZE5vZGUiLCJyZW1vdmVDaGlsZE5vZGUiLCJyZW1vdmVkTm9kZXMiLCJyZW1vdmVkQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkTm9kZXMiLCJyZXBsYWNlZE5vZGUiLCJyZXBsYWNlZENoaWxkTm9kZSIsInJlcGxhY2VtZW50Q2hpbGROb2RlIiwicmVwbGFjZUNoaWxkTm9kZSIsInJlcGxhY2VtZW50Tm9kZXMiLCJyZXBsYWNlbWVudENoaWxkTm9kZXMiLCJyZXBsYWNlQ2hpbGROb2RlcyIsInJlcGxhY2VtZW50VG9rZW5zIiwidG9rZW5zIiwibm9kZSIsInRyYWlsaW5nSW5kZXgiLCJ0cmFpbGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwibGVhZGluZ0luZGV4IiwibGVhZGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMiLCJlbmQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlnQkEsVUFBVTtlQUFWQTs7SUFnQ0FDLFlBQVk7ZUFBWkE7O0lBMUJBQyxVQUFVO2VBQVZBOztJQU1BQyxXQUFXO2VBQVhBOztJQTZCQUMsWUFBWTtlQUFaQTs7SUF2QkFDLFdBQVc7ZUFBWEE7O0lBT0FDLFlBQVk7ZUFBWkE7O0lBMkJBQyxhQUFhO2VBQWJBOzs7b0JBdEQ4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkUsU0FBU1AsV0FBV1EsZUFBZSxFQUFFQyxVQUFVO0lBQ3BELElBQU1DLFlBQVlGLGlCQUFrQixHQUFHO0lBRXZDQyxXQUFXRSxlQUFlLENBQUNEO0FBQzdCO0FBRU8sU0FBU1IsV0FBV1UsV0FBVyxFQUFFSCxVQUFVO0lBQ2hELElBQU1JLG1CQUFtQkQsYUFBYSxHQUFHO0lBRXpDSCxXQUFXSyxlQUFlLENBQUNEO0FBQzdCO0FBRU8sU0FBU1YsWUFBWVksWUFBWSxFQUFFTixVQUFVO0lBQ2xELElBQU1PLG9CQUFvQkQsY0FBYyxHQUFHO0lBRTNDTixXQUFXUSxnQkFBZ0IsQ0FBQ0Q7QUFDOUI7QUFFTyxTQUFTWCxZQUFZRyxlQUFlLEVBQUVVLFlBQVksRUFBRVQsVUFBVTtJQUNuRSxJQUFNVSxvQkFBb0JELGNBQ3BCRSx1QkFBdUJaLGlCQUFpQixHQUFHO0lBRWpEQyxXQUFXWSxnQkFBZ0IsQ0FBQ0YsbUJBQW1CQztBQUNqRDtBQUVPLFNBQVNkLGFBQWFnQixnQkFBZ0IsRUFBRUosWUFBWSxFQUFFVCxVQUFVO0lBQ3JFLElBQU1VLG9CQUFvQkQsY0FDcEJLLHdCQUF3QkQsa0JBQWtCLEdBQUc7SUFFbkRiLFdBQVdlLGlCQUFpQixDQUFDTCxtQkFBbUJJO0FBQ2xEO0FBRU8sU0FBU3RCLGFBQWF3QixpQkFBaUIsRUFBRWhCLFVBQVUsRUFBRWlCLE1BQU07UUFNaEVBO0lBTEEsSUFBTUMsT0FBT2xCLFlBQ1BtQixnQkFBZ0JDLElBQUFBLG9DQUE4QixFQUFDRixNQUFNRCxTQUNyREksUUFBUUYsZ0JBQWdCLEdBQ3hCRyxjQUFjO0lBRXBCTCxDQUFBQSxVQUFBQSxRQUFPTSxNQUFNLENBQWJOLE1BQUFBLFNBQUFBO1FBQWNJO1FBQU9DO0tBQWtDLENBQXZETCxPQUFrQyxxQkFBR0Q7QUFDdkM7QUFFTyxTQUFTckIsYUFBYVEsV0FBVyxFQUFFYyxNQUFNO0lBQzlDLElBQU1DLE9BQU9mLGFBQ1BxQixlQUFlQyxJQUFBQSxtQ0FBNkIsRUFBQ1AsTUFBTUQsU0FDbkRFLGdCQUFnQkMsSUFBQUEsb0NBQThCLEVBQUNGLE1BQU1ELFNBQ3JESSxRQUFRRyxjQUNSRSxNQUFNUCxnQkFBZ0IsR0FDdEJHLGNBQWNJLE1BQU1MO0lBRTFCSixPQUFPTSxNQUFNLENBQUNGLE9BQU9DO0FBQ3ZCO0FBRU8sU0FBU3hCLGNBQWNrQixpQkFBaUIsRUFBRVAsWUFBWSxFQUFFUSxNQUFNO1FBUW5FQTtJQVBBLElBQU1DLE9BQU9ULGNBQ1BlLGVBQWVDLElBQUFBLG1DQUE2QixFQUFDUCxNQUFNRCxTQUNuREUsZ0JBQWdCQyxJQUFBQSxvQ0FBOEIsRUFBQ0YsTUFBTUQsU0FDckRJLFFBQVFHLGNBQ1JFLE1BQU1QLGdCQUFnQixHQUN0QkcsY0FBY0ksTUFBTUw7SUFFMUJKLENBQUFBLFVBQUFBLFFBQU9NLE1BQU0sQ0FBYk4sTUFBQUEsU0FBQUE7UUFBY0k7UUFBT0M7S0FBa0MsQ0FBdkRMLE9BQWtDLHFCQUFHRDtBQUN2QyJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-markdown",
3
3
  "author": "James Smith",
4
- "version": "0.0.383",
4
+ "version": "0.0.388",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/highmark-markdown",
7
7
  "description": "Highmark's Markdown and Markdown Style languages.",
@@ -143,12 +143,31 @@ stronglyEmphasisedText {
143
143
  font-weight: bold;
144
144
  }
145
145
 
146
+ contentsList {
147
+ list-style-type: none;
148
+
149
+ contentsList {
150
+ margin-top: 7pt;
151
+ margin-left: 13pt;
152
+ }
153
+ }
154
+
155
+ contentsItem {
156
+ margin: 13pt;
157
+ margin-left: 0;
158
+ }
159
+
160
+ contentsLink {
161
+ font-size: 16pt;
162
+ text-decoration: none;
163
+ }
164
+
146
165
  footnotesList {
147
166
  border-top: 1pt solid black;
148
167
  padding-top: 13pt;
149
168
  }
150
169
 
151
- footnoteItem {
170
+ footnotesItem {
152
171
  font-size: 11pt;
153
172
  line-height: 17pt;
154
173
  margin-left: 13pt;
package/src/elementMap.js CHANGED
@@ -28,11 +28,11 @@ import { LINE_RULE_NAME,
28
28
  CONTENTS_LINK_RULE_NAME,
29
29
  CONTENTS_ITEM_RULE_NAME,
30
30
  CONTENTS_LIST_RULE_NAME,
31
- FOOTNOTE_ITEM_RULE_NAME,
32
31
  TABLE_HEAD_ROW_RULE_NAME,
33
32
  TABLE_BODY_ROW_RULE_NAME,
34
33
  INLINE_LISTING_RULE_NAME,
35
34
  UNORDERED_LIST_RULE_NAME,
35
+ FOOTNOTES_ITEM_RULE_NAME,
36
36
  FOOTNOTES_LIST_RULE_NAME,
37
37
  TABLE_HEAD_CELL_RULE_NAME,
38
38
  TABLE_BODY_CELL_RULE_NAME,
@@ -166,10 +166,6 @@ const elementMap = {
166
166
  tagName: "ul",
167
167
  className: "contents"
168
168
  },
169
- [FOOTNOTE_ITEM_RULE_NAME]: {
170
- tagName: "li",
171
- className: "footnote"
172
- },
173
169
  [TABLE_HEAD_ROW_RULE_NAME]: {
174
170
  tagName: "tr",
175
171
  className: null
@@ -186,6 +182,10 @@ const elementMap = {
186
182
  tagName: "ul",
187
183
  className: null
188
184
  },
185
+ [FOOTNOTES_ITEM_RULE_NAME]: {
186
+ tagName: "li",
187
+ className: "footnotes"
188
+ },
189
189
  [FOOTNOTES_LIST_RULE_NAME]: {
190
190
  tagName: "ol",
191
191
  className: "footnotes"
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  export const EMPTY_STRING = "";
4
- export const LINES_PER_PAGE = 5;
4
+ export const LINES_PER_PAGE = 3;
5
+ export const CONTENTS_DEPTH = 2;
5
6
  export const CHARACTERS_PER_LINE = 10;
6
7
  export const INTRODUCTION_CLASS_NAME = "introduction";
7
8
  export const INTRODUCTION_DIV_SELECTORS_STRING = "div.preview div.introduction";
@@ -17,7 +17,7 @@ import MarkdownContainerDiv from "./view/div/container/markdown";
17
17
  import MarkdownStyleContainerDiv from "./view/div/container/markdownStyle";
18
18
 
19
19
  import { postprocess } from "../utilities/markdown";
20
- import { LINES_PER_PAGE, CHARACTERS_PER_LINE, INTRODUCTION_CLASS_NAME } from "./constants";
20
+ import { LINES_PER_PAGE, CONTENTS_DEPTH, CHARACTERS_PER_LINE, INTRODUCTION_CLASS_NAME } from "./constants";
21
21
 
22
22
  const markdownLexer = MarkdownLexer.fromNothing(),
23
23
  markdownParser = MarkdownParser.fromNothing(),
@@ -86,11 +86,13 @@ class View extends Element {
86
86
  divisionMarkdownNode.setDivisionClassName(divisionClassName);
87
87
 
88
88
  const linesPerPage = LINES_PER_PAGE,
89
+ contentsDepth = CONTENTS_DEPTH,
89
90
  charactersPerLine = CHARACTERS_PER_LINE,
90
91
  context = {
91
92
  tokens,
92
93
  importer,
93
94
  linesPerPage,
95
+ contentsDepth,
94
96
  charactersPerLine
95
97
  },
96
98
  divisionMarkdownNodes = postprocess(divisionMarkdownNode, context);
@@ -256,21 +258,20 @@ class View extends Element {
256
258
  className: "view"
257
259
  };
258
260
 
259
- static initialMarkdown = `
260
-
261
- Occam [^occam].
262
-
263
- A paragraph to trigger the pagination.
261
+ static initialMarkdown = `@include introduction.md
262
+
263
+ ## Contents
264
+
265
+ @contents
264
266
 
265
- Occam and Florence [^occam] [^florence].
267
+ A paragraph.
268
+
269
+ Another paragraph [^occam].
266
270
 
267
271
  [^occam]: Occam footnote.
268
272
 
269
- [^florence]: Florence footnote.
270
-
271
273
  @footnotes
272
-
273
- @pageNumber
274
+
274
275
  `;
275
276
 
276
277
  static initialMarkdownStyle = `width: 100%;
@@ -287,7 +288,7 @@ export default withStyle(View)`
287
288
  `;
288
289
 
289
290
  function importer(filePath, context) {
290
- const content = `#Introuction
291
+ const content = `# Introduction
291
292
  `,
292
293
  startOfContent = true,
293
294
  startRule = markdownParser.getStartRule(),
@@ -110,12 +110,6 @@ const bnf = `
110
110
  footnotesDirective ::= "@footnotes" ;
111
111
 
112
112
 
113
- footnotesList ::= footnoteItem+ ;
114
-
115
-
116
- footnoteItem ::= anchor paragraph ;
117
-
118
-
119
113
  tableHead ::= tableHeadRow ;
120
114
 
121
115
 
@@ -242,14 +236,34 @@ const bnf = `
242
236
  ;
243
237
 
244
238
 
245
- anchor. ::= ε ;
246
-
247
-
248
239
  reference. ::= [reference] ;
249
240
 
250
241
 
251
242
  className ::= <NO_WHITESPACE>[identifier] ;
252
243
 
244
+
245
+ anchor. ::= ε ;
246
+
247
+
248
+ contentsList ::= contentsItem+ ;
249
+
250
+
251
+ contentsItem ::= contentsLink
252
+
253
+ | contentsLink? contentsList
254
+
255
+ ;
256
+
257
+
258
+ contentsLink ::= line ;
259
+
260
+
261
+ footnotesList ::= footnotesItem+ ;
262
+
263
+
264
+ footnotesItem ::= anchor paragraph ;
265
+
266
+
253
267
  `;
254
268
 
255
269
  export default bnf;
@@ -38,6 +38,15 @@ function appendChildNode(childNode) {
38
38
  childNodes.push(childNode);
39
39
  }
40
40
 
41
+ function replaceChildNode(replacedChildNode, replacementChildNode) {
42
+ const childNodes = this.getChildNodes(),
43
+ index = childNodes.indexOf(replacedChildNode),
44
+ start = index, ///
45
+ deleteCount = 1;
46
+
47
+ childNodes.splice(start, deleteCount, replacementChildNode);
48
+ }
49
+
41
50
  function replaceChildNodes(replacedChildNode, replacementChildNodes) {
42
51
  const childNodes = this.getChildNodes(),
43
52
  index = childNodes.indexOf(replacedChildNode),
@@ -72,6 +81,7 @@ const nodeMixins = {
72
81
  removeChildNode,
73
82
  appendChildNode,
74
83
  prependChildNode,
84
+ replaceChildNode,
75
85
  replaceChildNodes,
76
86
  getDescendantNodes
77
87
  };
@@ -1,50 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
- import ContentsLinkMarkdownNode from "../../node/markdown/contentsLink";
5
4
 
6
5
  import { CONTENTS_ITEM_RULE_NAME } from "../../ruleNames";
7
6
 
8
7
  export default class ContentsItemMarkdownNode extends MarkdownNode {
9
- getTokens(tokens = []) {
10
- const childNodes = this.getChildNodes(),
11
- contentsItemMarkdownNodes = childNodes; ///
12
-
13
- contentsItemMarkdownNodes.forEach((contentsItemMarkdownNode) => {
14
- contentsItemMarkdownNode.getTokens(tokens);
15
- });
16
-
17
- return tokens;
18
- }
19
-
20
- static fromContentsListMarkdownNodeAndNestedHeadingMarkdownNode(ContentsListMarkdownNode, nestedHeadingMarkdownNode, context) {
8
+ static fromReplacements(replacements) {
21
9
  const ruleName = CONTENTS_ITEM_RULE_NAME,
22
- childNodes = [],
23
- contentsLinkMarkdownNode = ContentsLinkMarkdownNode.fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context);
24
-
25
- if (contentsLinkMarkdownNode !== null) {
26
- const node = nestedHeadingMarkdownNode.getNode(),
27
- headingMarkdownNode = node; ///
28
-
29
- headingMarkdownNode.addAnchor(context);
30
-
31
- const childNode = contentsLinkMarkdownNode; ///
32
-
33
- childNodes.push(childNode);
34
- }
35
-
36
- const childNestedNodes = nestedHeadingMarkdownNode.getChildNestedNodes(),
37
- nestedHeadingMarkdownNodes = childNestedNodes, ///
38
- nestedHeadingMarkdownNodesLength = nestedHeadingMarkdownNodes.length;
39
-
40
- if (nestedHeadingMarkdownNodesLength > 0) {
41
- const contentsListMarkdownNode = ContentsListMarkdownNode.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
42
- childNode = contentsListMarkdownNode; ///
43
-
44
- childNodes.push(childNode);
45
- }
10
+ childNodes = replacements.map((replacement) => {
11
+ const replacementNode = replacement.getNode(),
12
+ childNode = replacementNode; ///
46
13
 
47
- const opacity = null,
14
+ return childNode;
15
+ }),
16
+ opacity = null,
48
17
  contentsItemMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsItemMarkdownNode, ruleName, childNodes, opacity);
49
18
 
50
19
  return contentsItemMarkdownNode;
@@ -1,30 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
- import Replacement from "../../replacement";
6
3
  import MarkdownNode from "../../node/markdown";
7
4
 
8
5
  import { HREF_ATTRIBUTE_NAME } from "../../attributeNames";
9
6
  import { CONTENTS_LINK_RULE_NAME } from "../../ruleNames";
10
7
 
11
- const { push } = arrayUtilities;
12
-
13
8
  export default class ContentsLinkMarkdownNode extends MarkdownNode {
14
- constructor(ruleName, childNodes, opacity, precedence, domElement, tokens, identifier) {
15
- super(ruleName, childNodes, opacity, precedence, tokens, domElement);
16
-
17
- this.tokens = tokens;
9
+ constructor(ruleName, childNodes, opacity, precedence, domElement, identifier) {
10
+ super(ruleName, childNodes, opacity, precedence, domElement);
18
11
 
19
12
  this.identifier = identifier;
20
13
  }
21
14
 
22
- getTokens(tokens = []) {
23
- push(tokens, this.tokens);
24
-
25
- return tokens;
26
- }
27
-
28
15
  getIdentifier() {
29
16
  return this.identifier;
30
17
  }
@@ -41,37 +28,17 @@ export default class ContentsLinkMarkdownNode extends MarkdownNode {
41
28
  return attributeValue;
42
29
  }
43
30
 
44
- clone() {
45
- const tokens = this.tokens.map((token) => {
46
- token = token.clone(); ///
31
+ clone() { return super.clone(this.identifier); }
47
32
 
48
- return token;
49
- });
50
-
51
- return super.clone(tokens, this.identifier);
52
- }
53
-
54
- static fromNestedHeadingMarkdownNode(nestedHeadingMarkdownNode, context) {
55
- let contentsLinkMarkdownNode = null;
56
-
57
- const node = nestedHeadingMarkdownNode.getNode(),
58
- headingMarkdownNode = node; ///
59
-
60
- if (headingMarkdownNode !== null) {
61
- const lineMarkdownNode = headingMarkdownNode.getLineMarkdownNode(),
62
- childNode = lineMarkdownNode, ///
63
- node = childNode, ///
64
- replacement = Replacement.fromNode(node, context),
33
+ static fromLineReplacementAndIdentifier(lineReplacement, identifier) {
34
+ const lineReplacementNode = lineReplacement.getNode(),
35
+ lineMarkdownNode = lineReplacementNode, ///
65
36
  ruleName = CONTENTS_LINK_RULE_NAME,
66
37
  childNodes = [
67
- childNode
38
+ lineMarkdownNode
68
39
  ],
69
40
  opacity = null,
70
- tokens = replacement.getTokens(),
71
- identifier = headingMarkdownNode.identifier(context);
72
-
73
- contentsLinkMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsLinkMarkdownNode, ruleName, childNodes, opacity, tokens, identifier);
74
- }
41
+ contentsLinkMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsLinkMarkdownNode, ruleName, childNodes, opacity, identifier);
75
42
 
76
43
  return contentsLinkMarkdownNode;
77
44
  }
@@ -1,53 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
- import ContentsItemMarkdownNode from "../../node/markdown/contentsItem";
5
4
 
6
- import { nestNodes } from "../../utilities/contents";
7
5
  import { CONTENTS_LIST_RULE_NAME } from "../../ruleNames";
8
6
 
9
7
  export default class ContentsListMarkdownNode extends MarkdownNode {
10
- getTokens(tokens = []) {
11
- const childNodes = this.getChildNodes(),
12
- contentsItemMarkdownNodes = childNodes; ///
13
-
14
- contentsItemMarkdownNodes.forEach((contentsItemMarkdownNode) => {
15
- contentsItemMarkdownNode.getTokens(tokens);
16
- });
17
-
18
- return tokens;
19
- }
20
-
21
- static fromHeadingMarkdownNodes(headingMarkdownNodes, context) {
22
- const nodes = headingMarkdownNodes, ///
23
- nestedNode = nestNodes(nodes),
24
- childNestedNodes = nestedNode.getChildNestedNodes(),
25
- nestedHeadingMarkdownNodes = childNestedNodes, ///
26
- ruleName = CONTENTS_LIST_RULE_NAME,
27
- childNodes = childNodesFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
28
- opacity = null,
29
- contentsListMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsListMarkdownNode, ruleName, childNodes, opacity);
30
-
31
- return contentsListMarkdownNode;
32
- }
33
-
34
- static fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context) {
8
+ static fromContentsItemReplacements(contentsItemReplacements) {
35
9
  const ruleName = CONTENTS_LIST_RULE_NAME,
36
- childNodes = childNodesFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
10
+ childNodes = contentsItemReplacements.map((contentsItemReplacement) => {
11
+ const contentsItemReplacementNode = contentsItemReplacement.getNode(),
12
+ childNode = contentsItemReplacementNode; ///
13
+
14
+ return childNode;
15
+ }),
37
16
  opacity = null,
38
17
  contentsListMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsListMarkdownNode, ruleName, childNodes, opacity);
39
18
 
40
19
  return contentsListMarkdownNode;
41
20
  }
42
21
  }
43
-
44
- function childNodesFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context) {
45
- const childNodes = nestedHeadingMarkdownNodes.map((nestedHeadingMarkdownNode) => {
46
- const contentsItemMarkdownNode = ContentsItemMarkdownNode.fromContentsListMarkdownNodeAndNestedHeadingMarkdownNode(ContentsListMarkdownNode, nestedHeadingMarkdownNode, context),
47
- childNode = contentsItemMarkdownNode; ///
48
-
49
- return childNode;
50
- });
51
-
52
- return childNodes;
53
- }
@@ -2,14 +2,14 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import Replacement from "../../../replacement";
5
+ import ImportedReplacement from "../../../replacement/imported";
6
6
  import DirectiveMarkdownNode from "../../../node/markdown/directive";
7
7
 
8
8
  const { last } = arrayUtilities;
9
9
 
10
10
  export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
11
- replacement(context) {
12
- let replacement = null;
11
+ import(context) {
12
+ let importedReplacement = null;
13
13
 
14
14
  const { importer = null } = context;
15
15
 
@@ -22,18 +22,18 @@ export default class EmbedDirectiveMarkdownNode extends DirectiveMarkdownNode {
22
22
  importedTokens = null } = context;
23
23
 
24
24
  if (importedNode !== null) {
25
- delete context.importedNode;
26
- delete context.importedTokens;
27
- delete context.importedClassName;
28
-
29
25
  const node = importedNode, ///
30
26
  tokens = importedTokens; ///
31
27
 
32
- replacement = Replacement.fromNodeAndTokens(node, tokens);
28
+ importedReplacement = ImportedReplacement.fromNodeAndTokens(node, tokens);
29
+
30
+ delete context.importedNode;
31
+ delete context.importedTokens;
32
+ delete context.importedClassName;
33
33
  }
34
34
  }
35
35
 
36
- return replacement;
36
+ return importedReplacement;
37
37
  }
38
38
 
39
39
  filePath(context) {