highmark-markdown 0.0.426 → 0.0.430

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 (102) hide show
  1. package/example.js +4002 -1871
  2. package/lib/constants.js +17 -1
  3. package/lib/defaultMarkdownStyle.js +2 -2
  4. package/lib/elementMap.js +20 -5
  5. package/lib/example/importer.js +5 -5
  6. package/lib/example/indexOptions.js +143 -0
  7. package/lib/example/view/div/sizeable/right.js +2 -2
  8. package/lib/example/view.js +14 -2
  9. package/lib/example.js +3 -3
  10. package/lib/index/phraseMatcher.js +76 -0
  11. package/lib/markdown/bnf.js +2 -2
  12. package/lib/markdown/lexer.js +11 -11
  13. package/lib/markdown/parser.js +12 -12
  14. package/lib/node/markdown/anchor.js +15 -8
  15. package/lib/node/markdown/comma.js +144 -0
  16. package/lib/node/markdown/contentsLink.js +3 -2
  17. package/lib/node/markdown/contentsList.js +10 -2
  18. package/lib/node/markdown/directive/index.js +120 -0
  19. package/lib/node/markdown/directive.js +10 -2
  20. package/lib/node/markdown/division.js +49 -9
  21. package/lib/node/markdown/{link.js → footnoteLink.js} +14 -13
  22. package/lib/node/markdown/footnotesItem.js +5 -12
  23. package/lib/node/markdown/heading.js +10 -2
  24. package/lib/node/markdown/indexItem.js +120 -0
  25. package/lib/node/markdown/indexLink.js +168 -0
  26. package/lib/node/markdown/indexList.js +138 -0
  27. package/lib/node/markdown/line.js +16 -2
  28. package/lib/node/markdown/subDivision.js +21 -2
  29. package/lib/node/markdown/verticalSpace.js +12 -1
  30. package/lib/node/markdown.js +32 -2
  31. package/lib/nodeMap.js +8 -3
  32. package/lib/prepends.js +26 -0
  33. package/lib/replacement/contentsList.js +3 -2
  34. package/lib/replacement/footnotesList.js +8 -8
  35. package/lib/replacement/indexItem.js +131 -0
  36. package/lib/replacement/indexList.js +166 -0
  37. package/lib/replacement/subDivision/footnotesDirective.js +2 -33
  38. package/lib/replacement/subDivision/indexAnchor.js +124 -0
  39. package/lib/replacement/subDivision/indexDirective.js +126 -0
  40. package/lib/replacement/subDivision/pageNumberDirective.js +2 -33
  41. package/lib/replacement/subDivision.js +15 -1
  42. package/lib/replacement.js +22 -45
  43. package/lib/ruleNames.js +31 -6
  44. package/lib/styleElement/markdown/default.js +4 -4
  45. package/lib/styleElement/markdown.js +3 -3
  46. package/lib/utilities/footnotes.js +10 -10
  47. package/lib/utilities/index.js +246 -0
  48. package/lib/utilities/object.js +59 -0
  49. package/lib/utilities/processing.js +10 -1
  50. package/lib/utilities/query.js +26 -18
  51. package/lib/utilities/replacement.js +67 -1
  52. package/package.json +3 -3
  53. package/src/constants.js +4 -0
  54. package/src/defaultMarkdownStyle.js +13 -1
  55. package/src/elementMap.js +30 -5
  56. package/src/example/importer.js +21 -5
  57. package/src/example/indexOptions.js +134 -0
  58. package/src/example/view/div/sizeable/right.js +1 -1
  59. package/src/example/view.js +20 -1
  60. package/src/example.js +2 -2
  61. package/src/index/phraseMatcher.js +38 -0
  62. package/src/markdown/bnf.js +21 -5
  63. package/src/markdown/lexer.js +10 -10
  64. package/src/markdown/parser.js +12 -12
  65. package/src/node/markdown/anchor.js +11 -6
  66. package/src/node/markdown/comma.js +32 -0
  67. package/src/node/markdown/contentsLink.js +3 -1
  68. package/src/node/markdown/contentsList.js +6 -0
  69. package/src/node/markdown/directive/index.js +7 -0
  70. package/src/node/markdown/directive.js +6 -0
  71. package/src/node/markdown/division.js +60 -9
  72. package/src/node/markdown/{link.js → footnoteLink.js} +7 -5
  73. package/src/node/markdown/footnotesItem.js +4 -11
  74. package/src/node/markdown/heading.js +11 -2
  75. package/src/node/markdown/indexItem.js +7 -0
  76. package/src/node/markdown/indexLink.js +63 -0
  77. package/src/node/markdown/indexList.js +34 -0
  78. package/src/node/markdown/line.js +15 -2
  79. package/src/node/markdown/subDivision.js +25 -2
  80. package/src/node/markdown/verticalSpace.js +15 -0
  81. package/src/node/markdown.js +44 -2
  82. package/src/nodeMap.js +18 -3
  83. package/src/prepends.js +5 -0
  84. package/src/replacement/contentsList.js +3 -1
  85. package/src/replacement/footnotesList.js +9 -7
  86. package/src/replacement/indexItem.js +28 -0
  87. package/src/replacement/indexList.js +45 -0
  88. package/src/replacement/subDivision/footnotesDirective.js +0 -6
  89. package/src/replacement/subDivision/indexAnchor.js +20 -0
  90. package/src/replacement/subDivision/indexDirective.js +20 -0
  91. package/src/replacement/subDivision/pageNumberDirective.js +0 -6
  92. package/src/replacement/subDivision.js +12 -0
  93. package/src/replacement.js +41 -68
  94. package/src/ruleNames.js +12 -2
  95. package/src/styleElement/markdown/default.js +2 -2
  96. package/src/styleElement/markdown.js +1 -1
  97. package/src/utilities/footnotes.js +8 -8
  98. package/src/utilities/index.js +335 -0
  99. package/src/utilities/object.js +50 -0
  100. package/src/utilities/processing.js +12 -0
  101. package/src/utilities/query.js +21 -13
  102. package/src/utilities/replacement.js +81 -0
@@ -24,6 +24,18 @@ _export(exports, {
24
24
  appendTokens: function() {
25
25
  return appendTokens;
26
26
  },
27
+ clonedTokensFromNodeAndTokens: function() {
28
+ return clonedTokensFromNodeAndTokens;
29
+ },
30
+ overwriteClonedNodeTokens: function() {
31
+ return overwriteClonedNodeTokens;
32
+ },
33
+ prependNode: function() {
34
+ return prependNode;
35
+ },
36
+ prependTokens: function() {
37
+ return prependTokens;
38
+ },
27
39
  removeNode: function() {
28
40
  return removeNode;
29
41
  },
@@ -72,6 +84,10 @@ function appendNode(appendedNode, parentNode) {
72
84
  var appendedChildNode = appendedNode; ///
73
85
  parentNode.appendChildNode(appendedChildNode);
74
86
  }
87
+ function prependNode(prependedNode, parentNode) {
88
+ var prependedChildNode = prependedNode; ///
89
+ parentNode.prependChildNode(prependedChildNode);
90
+ }
75
91
  function removeNode(removedNode, parentNode) {
76
92
  var removedChildNode = removedNode; ///
77
93
  parentNode.removeChildNode(removedChildNode);
@@ -100,6 +116,14 @@ function appendTokens(appendedTokens, parentNode, tokens) {
100
116
  deleteCount
101
117
  ].concat(_to_consumable_array(appendedTokens)));
102
118
  }
119
+ function prependTokens(prependedTokens, parentNode, tokens) {
120
+ var _tokens;
121
+ var node = parentNode, firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, deleteCount = 0;
122
+ (_tokens = tokens).splice.apply(_tokens, [
123
+ start,
124
+ deleteCount
125
+ ].concat(_to_consumable_array(prependedTokens)));
126
+ }
103
127
  function removeTokens(removedNode, tokens) {
104
128
  var node = removedNode, firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1, deleteCount = end - start;
105
129
  tokens.splice(start, deleteCount);
@@ -124,5 +148,47 @@ function addTokensAfter(existingNode, addedTokens, tokens) {
124
148
  deleteCount
125
149
  ].concat(_to_consumable_array(addedTokens)));
126
150
  }
151
+ function overwriteClonedNodeTokens(clonedNode, clonedTokens, tokens) {
152
+ var offset = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
153
+ var node = clonedNode; ///
154
+ overwriteNodeTokens(node, clonedTokens, tokens, offset);
155
+ }
156
+ function clonedTokensFromNodeAndTokens(node, tokens) {
157
+ var firstSignificantTokenIndex = node.getFirstSignificantTokenIndex(tokens), lastSignificantTokenIndex = node.getLastSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1;
158
+ tokens = tokens.slice(start, end); ///
159
+ var clonedTokens = tokens.map(function(token) {
160
+ var clonedToken = token.clone();
161
+ return clonedToken;
162
+ });
163
+ return clonedTokens;
164
+ }
165
+ function overwriteNodeTokens(node, clonedTokens, tokens, offset) {
166
+ var nodeTerminalNode = node.isTerminalNode();
167
+ if (nodeTerminalNode) {
168
+ var terminalNode = node; ///
169
+ overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset);
170
+ } else {
171
+ var nonTerminalNode = node; ///
172
+ overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset);
173
+ }
174
+ }
175
+ function overwriteTerminalNodeTokens(terminalNode, clonedTokens, tokens, offset) {
176
+ var index, significantToken;
177
+ significantToken = terminalNode.getSignificantToken();
178
+ if (significantToken !== null) {
179
+ index = tokens.indexOf(significantToken);
180
+ index -= offset;
181
+ var clonedToken = clonedTokens[index];
182
+ significantToken = clonedToken; ///
183
+ terminalNode.setSignificantToken(significantToken);
184
+ }
185
+ }
186
+ function overwriteNonTerminalNodeTokens(nonTerminalNode, clonedTokens, tokens, offset) {
187
+ var childNodes = nonTerminalNode.getChildNodes();
188
+ childNodes.forEach(function(childNode) {
189
+ var clonedNode = childNode; ///
190
+ overwriteNodeTokens(clonedNode, clonedTokens, tokens, offset);
191
+ });
192
+ }
127
193
 
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVwbGFjZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmROb2RlKGFwcGVuZGVkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCBhcHBlbmRlZENoaWxkTm9kZSA9IGFwcGVuZGVkTm9kZTsgIC8vL1xuXG4gIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGROb2RlKGFwcGVuZGVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUocmVtb3ZlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVtb3ZlZENoaWxkTm9kZSA9IHJlbW92ZWROb2RlOyAvLy9cblxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkTm9kZShyZW1vdmVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGVzKHJlbW92ZWROb2RlcywgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZW1vdmVkQ2hpbGROb2RlcyA9IHJlbW92ZWROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb2RlKHJlcGxhY2VtZW50Tm9kZSwgcmVwbGFjZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIHJlcGxhY2VtZW50Q2hpbGROb2RlID0gcmVwbGFjZW1lbnROb2RlOyAvLy9cblxuICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZE5vZGUocmVwbGFjZWRDaGlsZE5vZGUsIHJlcGxhY2VtZW50Q2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb2RlcyhyZXBsYWNlbWVudE5vZGVzLCByZXBsYWNlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGUgPSByZXBsYWNlZE5vZGUsICAvLy9cbiAgICAgICAgcmVwbGFjZW1lbnRDaGlsZE5vZGVzID0gcmVwbGFjZW1lbnROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZSwgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5vZGVzQWZ0ZXIoZXhpc3RpbmdOb2RlLCBhZGRlZE5vZGVzLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IGV4aXN0aW5nQ2hpbGROb2RlID0gZXhpc3RpbmdOb2RlLCAvLy9cbiAgICAgICAgYWRkZWRDaGlsZE5vZGVzID0gYWRkZWROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5hZGRDaGlsZE5vZGVzQWZ0ZXIoZXhpc3RpbmdDaGlsZE5vZGUsIGFkZGVkQ2hpbGROb2Rlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRUb2tlbnMoYXBwZW5kZWRUb2tlbnMsIHBhcmVudE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcGFyZW50Tm9kZSwgLy8vXG4gICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSAwO1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5hcHBlbmRlZFRva2Vucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUb2tlbnMocmVtb3ZlZE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcmVtb3ZlZE5vZGUsICAvLy9cbiAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IGVuZCAtIHN0YXJ0O1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VUb2tlbnMocmVwbGFjZW1lbnRUb2tlbnMsIHJlcGxhY2VkTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSByZXBsYWNlZE5vZGUsICAvLy9cbiAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IGVuZCAtIHN0YXJ0O1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5yZXBsYWNlbWVudFRva2Vucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGROb2RlQWZ0ZXIoZXhpc3RpbmdOb2RlLCBhZGRlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgZXhpc3RpbmdDaGlsZE5vZGUgPSBleGlzdGluZ05vZGUsIC8vL1xuICAgICAgICBhZGRlZENoaWxkTm9kZSA9IGFkZGVkTm9kZTsgLy8vXG5cbiAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZE5vZGVBZnRlcihleGlzdGluZ0NoaWxkTm9kZSwgYWRkZWRDaGlsZE5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVG9rZW5zQWZ0ZXIoZXhpc3RpbmdOb2RlLCBhZGRlZFRva2VucywgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSBleGlzdGluZ05vZGUsICAvLy9cbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IDA7XG5cbiAgdG9rZW5zLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFkZGVkVG9rZW5zKTtcbn1cbiJdLCJuYW1lcyI6WyJhZGROb2RlQWZ0ZXIiLCJhZGROb2Rlc0FmdGVyIiwiYWRkVG9rZW5zQWZ0ZXIiLCJhcHBlbmROb2RlIiwiYXBwZW5kVG9rZW5zIiwicmVtb3ZlTm9kZSIsInJlbW92ZU5vZGVzIiwicmVtb3ZlVG9rZW5zIiwicmVwbGFjZU5vZGUiLCJyZXBsYWNlTm9kZXMiLCJyZXBsYWNlVG9rZW5zIiwiYXBwZW5kZWROb2RlIiwicGFyZW50Tm9kZSIsImFwcGVuZGVkQ2hpbGROb2RlIiwiYXBwZW5kQ2hpbGROb2RlIiwicmVtb3ZlZE5vZGUiLCJyZW1vdmVkQ2hpbGROb2RlIiwicmVtb3ZlQ2hpbGROb2RlIiwicmVtb3ZlZE5vZGVzIiwicmVtb3ZlZENoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZE5vZGVzIiwicmVwbGFjZW1lbnROb2RlIiwicmVwbGFjZWROb2RlIiwicmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZSIsInJlcGxhY2VDaGlsZE5vZGUiLCJyZXBsYWNlbWVudE5vZGVzIiwicmVwbGFjZW1lbnRDaGlsZE5vZGVzIiwicmVwbGFjZUNoaWxkTm9kZXMiLCJleGlzdGluZ05vZGUiLCJhZGRlZE5vZGVzIiwiZXhpc3RpbmdDaGlsZE5vZGUiLCJhZGRlZENoaWxkTm9kZXMiLCJhZGRDaGlsZE5vZGVzQWZ0ZXIiLCJhcHBlbmRlZFRva2VucyIsInRva2VucyIsIm5vZGUiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZW5kIiwicmVwbGFjZW1lbnRUb2tlbnMiLCJhZGRlZE5vZGUiLCJhZGRlZENoaWxkTm9kZSIsImFwcGVuZENoaWxkTm9kZUFmdGVyIiwiYWRkZWRUb2tlbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQXdFZ0JBLFlBQVk7ZUFBWkE7O0lBdENBQyxhQUFhO2VBQWJBOztJQTZDQUMsY0FBYztlQUFkQTs7SUE3RUFDLFVBQVU7ZUFBVkE7O0lBdUNBQyxZQUFZO2VBQVpBOztJQWpDQUMsVUFBVTtlQUFWQTs7SUFNQUMsV0FBVztlQUFYQTs7SUFvQ0FDLFlBQVk7ZUFBWkE7O0lBOUJBQyxXQUFXO2VBQVhBOztJQU9BQyxZQUFZO2VBQVpBOztJQWtDQUMsYUFBYTtlQUFiQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTNEVCxTQUFTUCxXQUFXUSxZQUFZLEVBQUVDLFVBQVU7SUFDakQsSUFBTUMsb0JBQW9CRixjQUFlLEdBQUc7SUFFNUNDLFdBQVdFLGVBQWUsQ0FBQ0Q7QUFDN0I7QUFFTyxTQUFTUixXQUFXVSxXQUFXLEVBQUVILFVBQVU7SUFDaEQsSUFBTUksbUJBQW1CRCxhQUFhLEdBQUc7SUFFekNILFdBQVdLLGVBQWUsQ0FBQ0Q7QUFDN0I7QUFFTyxTQUFTVixZQUFZWSxZQUFZLEVBQUVOLFVBQVU7SUFDbEQsSUFBTU8sb0JBQW9CRCxjQUFjLEdBQUc7SUFFM0NOLFdBQVdRLGdCQUFnQixDQUFD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
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVwbGFjZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmROb2RlKGFwcGVuZGVkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCBhcHBlbmRlZENoaWxkTm9kZSA9IGFwcGVuZGVkTm9kZTsgIC8vL1xuXG4gIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGROb2RlKGFwcGVuZGVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBlbmROb2RlKHByZXBlbmRlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcHJlcGVuZGVkQ2hpbGROb2RlID0gcHJlcGVuZGVkTm9kZTsgIC8vL1xuXG4gIHBhcmVudE5vZGUucHJlcGVuZENoaWxkTm9kZShwcmVwZW5kZWRDaGlsZE5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZShyZW1vdmVkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZW1vdmVkQ2hpbGROb2RlID0gcmVtb3ZlZE5vZGU7IC8vL1xuXG4gIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGROb2RlKHJlbW92ZWRDaGlsZE5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTm9kZXMocmVtb3ZlZE5vZGVzLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGVzID0gcmVtb3ZlZE5vZGVzOyAvLy9cblxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU5vZGUocmVwbGFjZW1lbnROb2RlLCByZXBsYWNlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGUgPSByZXBsYWNlZE5vZGUsICAvLy9cbiAgICAgICAgcmVwbGFjZW1lbnRDaGlsZE5vZGUgPSByZXBsYWNlbWVudE5vZGU7IC8vL1xuXG4gIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkTm9kZShyZXBsYWNlZENoaWxkTm9kZSwgcmVwbGFjZW1lbnRDaGlsZE5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU5vZGVzKHJlcGxhY2VtZW50Tm9kZXMsIHJlcGxhY2VkTm9kZSwgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZXBsYWNlZENoaWxkTm9kZSA9IHJlcGxhY2VkTm9kZSwgIC8vL1xuICAgICAgICByZXBsYWNlbWVudENoaWxkTm9kZXMgPSByZXBsYWNlbWVudE5vZGVzOyAvLy9cblxuICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTm9kZXNBZnRlcihleGlzdGluZ05vZGUsIGFkZGVkTm9kZXMsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgZXhpc3RpbmdDaGlsZE5vZGUgPSBleGlzdGluZ05vZGUsIC8vL1xuICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBhZGRlZE5vZGVzOyAvLy9cblxuICBwYXJlbnROb2RlLmFkZENoaWxkTm9kZXNBZnRlcihleGlzdGluZ0NoaWxkTm9kZSwgYWRkZWRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFRva2VucyhhcHBlbmRlZFRva2VucywgcGFyZW50Tm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGUgPSBwYXJlbnROb2RlLCAvLy9cbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IDA7XG5cbiAgdG9rZW5zLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFwcGVuZGVkVG9rZW5zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBlbmRUb2tlbnMocHJlcGVuZGVkVG9rZW5zLCBwYXJlbnROb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgbm9kZSA9IHBhcmVudE5vZGUsIC8vL1xuICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSAwO1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5wcmVwZW5kZWRUb2tlbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVG9rZW5zKHJlbW92ZWROb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgbm9kZSA9IHJlbW92ZWROb2RlLCAgLy8vXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBlbmQgLSBzdGFydDtcblxuICB0b2tlbnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlVG9rZW5zKHJlcGxhY2VtZW50VG9rZW5zLCByZXBsYWNlZE5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBlbmQgLSBzdGFydDtcblxuICB0b2tlbnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4ucmVwbGFjZW1lbnRUb2tlbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTm9kZUFmdGVyKGV4aXN0aW5nTm9kZSwgYWRkZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IGV4aXN0aW5nQ2hpbGROb2RlID0gZXhpc3RpbmdOb2RlLCAvLy9cbiAgICAgICAgYWRkZWRDaGlsZE5vZGUgPSBhZGRlZE5vZGU7IC8vL1xuXG4gIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGROb2RlQWZ0ZXIoZXhpc3RpbmdDaGlsZE5vZGUsIGFkZGVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFRva2Vuc0FmdGVyKGV4aXN0aW5nTm9kZSwgYWRkZWRUb2tlbnMsIHRva2Vucykge1xuICBjb25zdCBub2RlID0gZXhpc3RpbmdOb2RlLCAgLy8vXG4gICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSAwO1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5hZGRlZFRva2Vucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvdmVyd3JpdGVDbG9uZWROb2RlVG9rZW5zKGNsb25lZE5vZGUsIGNsb25lZFRva2VucywgdG9rZW5zLCBvZmZzZXQgPSAwKSB7XG4gIGNvbnN0IG5vZGUgPSBjbG9uZWROb2RlOyAgLy8vXG5cbiAgb3ZlcndyaXRlTm9kZVRva2Vucyhub2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lZFRva2Vuc0Zyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4LCAgLy8vXG4gICAgICAgIGVuZCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxO1xuXG4gIHRva2VucyA9IHRva2Vucy5zbGljZShzdGFydCwgZW5kKTsgIC8vL1xuXG4gIGNvbnN0IGNsb25lZFRva2VucyA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB7ICAvLy9cbiAgICBjb25zdCBjbG9uZWRUb2tlbiA9IHRva2VuLmNsb25lKCk7XG5cbiAgICByZXR1cm4gY2xvbmVkVG9rZW47XG4gIH0pO1xuXG4gIHJldHVybiBjbG9uZWRUb2tlbnM7XG59XG5cbmZ1bmN0aW9uIG92ZXJ3cml0ZU5vZGVUb2tlbnMobm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCkge1xuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgb3ZlcndyaXRlVGVybWluYWxOb2RlVG9rZW5zKHRlcm1pbmFsTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgb3ZlcndyaXRlTm9uVGVybWluYWxOb2RlVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlVGVybWluYWxOb2RlVG9rZW5zKHRlcm1pbmFsTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCkge1xuICBsZXQgaW5kZXgsXG4gICAgICBzaWduaWZpY2FudFRva2VuO1xuXG4gIHNpZ25pZmljYW50VG9rZW4gPSB0ZXJtaW5hbE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbigpO1xuXG4gIGlmIChzaWduaWZpY2FudFRva2VuICE9PSBudWxsKSB7XG4gICAgaW5kZXggPSB0b2tlbnMuaW5kZXhPZihzaWduaWZpY2FudFRva2VuKTtcblxuICAgIGluZGV4IC09IG9mZnNldDtcblxuICAgIGNvbnN0IGNsb25lZFRva2VuID0gY2xvbmVkVG9rZW5zW2luZGV4XTtcblxuICAgIHNpZ25pZmljYW50VG9rZW4gPSBjbG9uZWRUb2tlbjsgIC8vL1xuXG4gICAgdGVybWluYWxOb2RlLnNldFNpZ25pZmljYW50VG9rZW4oc2lnbmlmaWNhbnRUb2tlbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gb3ZlcndyaXRlTm9uVGVybWluYWxOb2RlVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgY2xvbmVkVG9rZW5zLCB0b2tlbnMsIG9mZnNldCkge1xuICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICBjaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNvbnN0IGNsb25lZE5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgb3ZlcndyaXRlTm9kZVRva2VucyhjbG9uZWROb2RlLCBjbG9uZWRUb2tlbnMsIHRva2Vucywgb2Zmc2V0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiYWRkTm9kZUFmdGVyIiwiYWRkTm9kZXNBZnRlciIsImFkZFRva2Vuc0FmdGVyIiwiYXBwZW5kTm9kZSIsImFwcGVuZFRva2VucyIsImNsb25lZFRva2Vuc0Zyb21Ob2RlQW5kVG9rZW5zIiwib3ZlcndyaXRlQ2xvbmVkTm9kZVRva2VucyIsInByZXBlbmROb2RlIiwicHJlcGVuZFRva2VucyIsInJlbW92ZU5vZGUiLCJyZW1vdmVOb2RlcyIsInJlbW92ZVRva2VucyIsInJlcGxhY2VOb2RlIiwicmVwbGFjZU5vZGVzIiwicmVwbGFjZVRva2VucyIsImFwcGVuZGVkTm9kZSIsInBhcmVudE5vZGUiLCJhcHBlbmRlZENoaWxkTm9kZSIsImFwcGVuZENoaWxkTm9kZSIsInByZXBlbmRlZE5vZGUiLCJwcmVwZW5kZWRDaGlsZE5vZGUiLCJwcmVwZW5kQ2hpbGROb2RlIiwicmVtb3ZlZE5vZGUiLCJyZW1vdmVkQ2hpbGROb2RlIiwicmVtb3ZlQ2hpbGROb2RlIiwicmVtb3ZlZE5vZGVzIiwicmVtb3ZlZENoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZE5vZGVzIiwicmVwbGFjZW1lbnROb2RlIiwicmVwbGFjZWROb2RlIiwicmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZSIsInJlcGxhY2VDaGlsZE5vZGUiLCJyZXBsYWNlbWVudE5vZGVzIiwicmVwbGFjZW1lbnRDaGlsZE5vZGVzIiwicmVwbGFjZUNoaWxkTm9kZXMiLCJleGlzdGluZ05vZGUiLCJhZGRlZE5vZGVzIiwiZXhpc3RpbmdDaGlsZE5vZGUiLCJhZGRlZENoaWxkTm9kZXMiLCJhZGRDaGlsZE5vZGVzQWZ0ZXIiLCJhcHBlbmRlZFRva2VucyIsInRva2VucyIsIm5vZGUiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJwcmVwZW5kZWRUb2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZW5kIiwicmVwbGFjZW1lbnRUb2tlbnMiLCJhZGRlZE5vZGUiLCJhZGRlZENoaWxkTm9kZSIsImFwcGVuZENoaWxkTm9kZUFmdGVyIiwiYWRkZWRUb2tlbnMiLCJjbG9uZWROb2RlIiwiY2xvbmVkVG9rZW5zIiwib2Zmc2V0Iiwib3ZlcndyaXRlTm9kZVRva2VucyIsInNsaWNlIiwibWFwIiwidG9rZW4iLCJjbG9uZWRUb2tlbiIsImNsb25lIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwib3ZlcndyaXRlVGVybWluYWxOb2RlVG9rZW5zIiwibm9uVGVybWluYWxOb2RlIiwib3ZlcndyaXRlTm9uVGVybWluYWxOb2RlVG9rZW5zIiwiaW5kZXgiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImluZGV4T2YiLCJzZXRTaWduaWZpY2FudFRva2VuIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF1RmdCQSxZQUFZO2VBQVpBOztJQS9DQUMsYUFBYTtlQUFiQTs7SUFzREFDLGNBQWM7ZUFBZEE7O0lBNUZBQyxVQUFVO2VBQVZBOztJQTZDQUMsWUFBWTtlQUFaQTs7SUE4REFDLDZCQUE2QjtlQUE3QkE7O0lBTkFDLHlCQUF5QjtlQUF6QkE7O0lBL0ZBQyxXQUFXO2VBQVhBOztJQWdEQUMsYUFBYTtlQUFiQTs7SUExQ0FDLFVBQVU7ZUFBVkE7O0lBTUFDLFdBQVc7ZUFBWEE7O0lBNkNBQyxZQUFZO2VBQVpBOztJQXZDQUMsV0FBVztlQUFYQTs7SUFPQUMsWUFBWTtlQUFaQTs7SUEyQ0FDLGFBQWE7ZUFBYkE7Ozs7Ozs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-markdown",
3
3
  "author": "James Smith",
4
- "version": "0.0.426",
4
+ "version": "0.0.430",
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.",
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^14.0.1",
14
- "occam-grammars": "^1.0.660",
14
+ "occam-grammars": "^1.0.662",
15
15
  "occam-lexers": "^22.0.44",
16
- "occam-parsers": "^22.0.69",
16
+ "occam-parsers": "^22.0.72",
17
17
  "occam-query": "^3.1.174"
18
18
  },
19
19
  "devDependencies": {
package/src/constants.js CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  export const HEAD = "head";
4
4
  export const STYLE = "style";
5
+ export const COMMA = ",";
5
6
  export const COLOUR = "color"; ///
6
7
  export const HYPHEN = "-";
8
+ export const UNDERSCORE = "_";
9
+ export const GLOBAL_FLAG = "g";
7
10
  export const EMPTY_STRING = "";
11
+ export const SINGLE_SPACE = " ";
8
12
  export const CARRIAGE_RETURN = "\n";
@@ -110,7 +110,7 @@ inlineListing {
110
110
  padding: 0 3pt 0 3pt;
111
111
  }
112
112
 
113
- link {
113
+ footnoteLink {
114
114
  font-size: 9pt;
115
115
  line-height: 13pt;
116
116
  margin-left: 3pt;
@@ -178,6 +178,18 @@ footnotesItem {
178
178
  }
179
179
  }
180
180
 
181
+ indexList {
182
+ list-style-type: none;
183
+ }
184
+
185
+ indexItem {
186
+ margin-left: 0;
187
+ }
188
+
189
+ indexLink {
190
+ margin-left: 3pt;
191
+ }
192
+
181
193
  pageNumber {
182
194
  left: 0;
183
195
  width: 100%;
package/src/elementMap.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { LINE_RULE_NAME,
4
- LINK_RULE_NAME,
4
+ COMMA_RULE_NAME,
5
5
  IMAGE_RULE_NAME,
6
6
  TABLE_RULE_NAME,
7
7
  ERROR_RULE_NAME,
@@ -11,6 +11,9 @@ import { LINE_RULE_NAME,
11
11
  REFERENCE_RULE_NAME,
12
12
  PARAGRAPH_RULE_NAME,
13
13
  HYPERLINK_RULE_NAME,
14
+ INDEX_LIST_RULE_NAME,
15
+ INDEX_ITEM_RULE_NAME,
16
+ INDEX_LINK_RULE_NAME,
14
17
  TABLE_CELL_RULE_NAME,
15
18
  TABLE_HEAD_RULE_NAME,
16
19
  TABLE_BODY_RULE_NAME,
@@ -28,6 +31,7 @@ import { LINE_RULE_NAME,
28
31
  CONTENTS_LINK_RULE_NAME,
29
32
  CONTENTS_ITEM_RULE_NAME,
30
33
  CONTENTS_LIST_RULE_NAME,
34
+ FOOTNOTE_LINK_RULE_NAME,
31
35
  TABLE_HEAD_ROW_RULE_NAME,
32
36
  TABLE_BODY_ROW_RULE_NAME,
33
37
  INLINE_LISTING_RULE_NAME,
@@ -38,6 +42,7 @@ import { LINE_RULE_NAME,
38
42
  TABLE_BODY_CELL_RULE_NAME,
39
43
  EMPHASISED_TEXT_RULE_NAME,
40
44
  PRIMARY_HEADING_RULE_NAME,
45
+ INDEX_DIRECTIVE_RULE_NAME,
41
46
  EMBED_DIRECTIVE_RULE_NAME,
42
47
  TERTIARY_HEADING_RULE_NAME,
43
48
  IGNORE_DIRECTIVE_RULE_NAME,
@@ -58,9 +63,9 @@ const elementMap = {
58
63
  tagName: "span",
59
64
  className: "line"
60
65
  },
61
- [LINK_RULE_NAME]: {
62
- tagName: "a",
63
- className: "link"
66
+ [COMMA_RULE_NAME]: {
67
+ tagName: null,
68
+ className: null
64
69
  },
65
70
  [IMAGE_RULE_NAME]: {
66
71
  tagName: "img",
@@ -98,6 +103,18 @@ const elementMap = {
98
103
  tagName: "a",
99
104
  className: "hyperlink"
100
105
  },
106
+ [INDEX_LIST_RULE_NAME] : {
107
+ tagName: "ul",
108
+ className: "index"
109
+ },
110
+ [INDEX_ITEM_RULE_NAME] : {
111
+ tagName: "li",
112
+ className: "index"
113
+ },
114
+ [INDEX_LINK_RULE_NAME] : {
115
+ tagName: "a",
116
+ className: "index"
117
+ },
101
118
  [TABLE_CELL_RULE_NAME]: {
102
119
  tagName: null,
103
120
  className: null
@@ -156,7 +173,7 @@ const elementMap = {
156
173
  },
157
174
  [CONTENTS_LINK_RULE_NAME]: {
158
175
  tagName: "a",
159
- className: "contents"
176
+ className: "contents-link"
160
177
  },
161
178
  [CONTENTS_ITEM_RULE_NAME]: {
162
179
  tagName: "li",
@@ -166,6 +183,10 @@ const elementMap = {
166
183
  tagName: "ul",
167
184
  className: "contents"
168
185
  },
186
+ [FOOTNOTE_LINK_RULE_NAME]: {
187
+ tagName: "a",
188
+ className: "footnote-link"
189
+ },
169
190
  [TABLE_HEAD_ROW_RULE_NAME]: {
170
191
  tagName: "tr",
171
192
  className: null
@@ -206,6 +227,10 @@ const elementMap = {
206
227
  tagName: "h1",
207
228
  className: null
208
229
  },
230
+ [INDEX_DIRECTIVE_RULE_NAME]: {
231
+ tagName: null,
232
+ className: null
233
+ },
209
234
  [EMBED_DIRECTIVE_RULE_NAME]: {
210
235
  tagName: null,
211
236
  className: null
@@ -33,7 +33,8 @@ function classNameFromFilePath(filePath) {
33
33
  return className;
34
34
  }
35
35
 
36
- const CONTENT_PATH = "content.md",
36
+ const INDEX_PATH = "index.md",
37
+ CONTENT_PATH = "content.md",
37
38
  CONTENTS_PATH = "contents.md",
38
39
  HALF_TITLE_PATH = "half-title.md",
39
40
  FRONT_MATTER_PATH = "front-matter.md",
@@ -45,9 +46,15 @@ const CONTENT_PATH = "content.md",
45
46
  export const defaultContent = `@ignore
46
47
 
47
48
  @include ${FRONT_MATTER_PATH}
48
- @include ${CONTENT_PATH}`;
49
+ @include ${CONTENT_PATH}
50
+ @include ${INDEX_PATH}
51
+ `;
49
52
 
50
- const contentContent = `@ignore
53
+ const indexContent = `## Index
54
+
55
+ @index`,
56
+
57
+ contentContent = `@ignore
51
58
 
52
59
  @include ${INTRODUCTION_PATH}
53
60
  @include ${GETTING_STARTED_PATH}`,
@@ -82,7 +89,7 @@ This book explains how this is possible.
82
89
  gettingStartedContent = `# Getting started
83
90
 
84
91
  Another short paragraph with a reference to a footnote[^occam].
85
-
92
+
86
93
  [^occam]: The word Occam is used somewhat nebulously here.
87
94
  It is most often associated with Occam's IDE but in fact it encompasses a range of software and services.
88
95
  This book explains these divers parts and there is a companion book, called The Foundations of Symbolic Reasoning, that covers the underlying theory.
@@ -99,10 +106,19 @@ This book explains these divers parts and there is a companion book, called The
99
106
 
100
107
  installingTheCLIContent = `## Installing the CLI`,
101
108
 
102
- gettingToGripsWithTheIDEIContent = `## Getting to grips with the IDE`;
109
+ gettingToGripsWithTheIDEIContent = `## Getting to grips with the IDE
110
+
111
+ * An unordered list to test...
112
+ * ...the indexing.
113
+
114
+ 1. As well as an...
115
+ 2. ...ordered list.
116
+
117
+ `;
103
118
 
104
119
  const contentMap = {
105
120
 
121
+ [INDEX_PATH]: indexContent,
106
122
  [CONTENT_PATH]: contentContent,
107
123
  [CONTENTS_PATH]: contentsContent,
108
124
  [HALF_TITLE_PATH]: halfTitleContent,
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ const indexOptions = {
4
+ "phrases": [
5
+ "symbolic reasoning"
6
+ ],
7
+ "plurals": [
8
+ "grammar",
9
+ "language(s)"
10
+ ],
11
+ "acronyms": [
12
+ "CLI",
13
+ ],
14
+ "properNouns": [
15
+ "Occam"
16
+ ],
17
+ "ignoredWords": [
18
+ "a",
19
+ "all",
20
+ "also",
21
+ "an",
22
+ "and",
23
+ "another",
24
+ "approach",
25
+ "apt",
26
+ "are",
27
+ "as",
28
+ "associated",
29
+ "at",
30
+ "between",
31
+ "boils",
32
+ "book",
33
+ "but",
34
+ "called",
35
+ "cannot",
36
+ "companion",
37
+ "considerable",
38
+ "contents",
39
+ "controlled",
40
+ "covers",
41
+ "day",
42
+ "detail",
43
+ "detailed",
44
+ "distinguish",
45
+ "divers",
46
+ "down",
47
+ "encompasses",
48
+ "end",
49
+ "expert",
50
+ "explains",
51
+ "explanation",
52
+ "explanations",
53
+ "fact",
54
+ "florence",
55
+ "footnote",
56
+ "former",
57
+ "foundations",
58
+ "future",
59
+ "getting",
60
+ "goes",
61
+ "grips",
62
+ "has",
63
+ "have",
64
+ "here",
65
+ "how",
66
+ "i",
67
+ "ide",
68
+ "in",
69
+ "indeed",
70
+ "index",
71
+ "indexing",
72
+ "into",
73
+ "introduction",
74
+ "is",
75
+ "it",
76
+ "its",
77
+ "largely",
78
+ "least",
79
+ "limits",
80
+ "list",
81
+ "make",
82
+ "more",
83
+ "most",
84
+ "natural",
85
+ "near",
86
+ "nebulously",
87
+ "need",
88
+ "not",
89
+ "of",
90
+ "often",
91
+ "on",
92
+ "ordered",
93
+ "originally",
94
+ "own",
95
+ "paragraph",
96
+ "parts",
97
+ "possible",
98
+ "provide",
99
+ "purpose",
100
+ "range",
101
+ "reference",
102
+ "s",
103
+ "seemed",
104
+ "services",
105
+ "short",
106
+ "some",
107
+ "somewhat",
108
+ "started",
109
+ "subject",
110
+ "support",
111
+ "system",
112
+ "test",
113
+ "that",
114
+ "the",
115
+ "there",
116
+ "these",
117
+ "this",
118
+ "to",
119
+ "tried",
120
+ "underlying",
121
+ "unordered",
122
+ "use",
123
+ "useable",
124
+ "used",
125
+ "was",
126
+ "well",
127
+ "which",
128
+ "will",
129
+ "with",
130
+ "word"
131
+ ]
132
+ };
133
+
134
+ export default indexOptions;
@@ -12,7 +12,7 @@ class RightSizeableDiv extends SizeableDiv {
12
12
 
13
13
  export default withStyle(RightSizeableDiv)`
14
14
 
15
- height: 20rem;
15
+ height: 32rem;
16
16
  min-width: 1rem;
17
17
  flex-direction: column;
18
18
 
@@ -11,6 +11,7 @@ import importer from "./importer";
11
11
  import PreviewDiv from "./view/div/preview";
12
12
  import SubHeading from "./view/subHeading";
13
13
  import CSSTextarea from "./view/textarea/css";
14
+ import indexOptions from "./indexOptions";
14
15
  import TabButtonsDiv from "./view/div/tabButtons";
15
16
  import LeftSizeableDiv from "./view/div/sizeable/left";
16
17
  import RightSizeableDiv from "./view/div/sizeable/right";
@@ -89,9 +90,12 @@ class View extends Element {
89
90
  context = {
90
91
  tokens,
91
92
  importer,
93
+ indexOptions,
92
94
  linesPerPage,
93
95
  contentsDepth,
94
- charactersPerLine
96
+ charactersPerLine,
97
+ tokensFromContent,
98
+ nodeFromTokensAndStartRuleName
95
99
  },
96
100
  divisionMarkdownNodes = postprocess(divisionMarkdownNode, context);
97
101
 
@@ -270,3 +274,18 @@ export default withStyle(View)`
270
274
  padding: 1rem;
271
275
 
272
276
  `;
277
+
278
+ function tokensFromContent(content) {
279
+ const tokens = markdownLexer.tokenise(content);
280
+
281
+ return tokens;
282
+ }
283
+
284
+ function nodeFromTokensAndStartRuleName(tokens, startRuleName) {
285
+ const ruleMap = markdownParser.getRuleMap(),
286
+ startRule = ruleMap[startRuleName],
287
+ startOfContent = true,
288
+ node = markdownParser.parse(tokens, startRule, startOfContent);
289
+
290
+ return node;
291
+ }
package/src/example.js CHANGED
@@ -15,9 +15,9 @@ const { renderStyles } = withStyle;
15
15
 
16
16
  const selectorsString = PREVIEWED_DIV_SELECTORS_STRING;
17
17
 
18
- DefaultMarkdownStyleElement.fromAndSelectorsString(selectorsString);
18
+ DefaultMarkdownStyleElement.fromSelectorsString(selectorsString);
19
19
 
20
- const markdownStyleElement = MarkdownStyleElement.fromAndSelectorsString(selectorsString);
20
+ const markdownStyleElement = MarkdownStyleElement.fromSelectorsString(selectorsString);
21
21
 
22
22
  renderStyles();
23
23
 
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { UNDERSCORE, GLOBAL_FLAG, SINGLE_SPACE } from "../constants";
4
+
5
+ export default class PhraseMatcher {
6
+ constructor(regularExpression, replacement) {
7
+ this.regularExpression = regularExpression;
8
+ this.replacement = replacement;
9
+ }
10
+
11
+ getRegularExpression() {
12
+ return this.regularExpression;
13
+ }
14
+
15
+ getReplacement() {
16
+ return this.replacement;
17
+ }
18
+
19
+ replace(plainText) {
20
+ plainText = plainText.replace(this.regularExpression, this.replacement); ///
21
+
22
+ return plainText;
23
+ }
24
+
25
+ static revert(entry) {
26
+ entry = entry.replace(/_/g, SINGLE_SPACE);
27
+
28
+ return entry;
29
+ }
30
+
31
+ static fromPhrase(phrase) {
32
+ const regularExpression = new RegExp(phrase, GLOBAL_FLAG),
33
+ replacement = phrase.replace(/\s/g, UNDERSCORE),
34
+ phraseMatcher = new PhraseMatcher(regularExpression, replacement);
35
+
36
+ return phraseMatcher;
37
+ }
38
+ }
@@ -43,6 +43,8 @@ const bnf = `
43
43
 
44
44
  directives ::= pageNumber
45
45
 
46
+ | indexDirective
47
+
46
48
  | ignoreDirective
47
49
 
48
50
  | contentsDirective
@@ -92,6 +94,9 @@ const bnf = `
92
94
  embedDirective ::= "@embed" [path] ;
93
95
 
94
96
 
97
+ indexDirective ::= "@index" ;
98
+
99
+
95
100
  ignoreDirective ::= "@ignore" ;
96
101
 
97
102
 
@@ -148,7 +153,7 @@ const bnf = `
148
153
  tableCell ::= line [vertical-bar] ;
149
154
 
150
155
 
151
- line. ::= ( link
156
+ line. ::= ( footnoteLink
152
157
 
153
158
  | emailLink
154
159
 
@@ -167,7 +172,7 @@ const bnf = `
167
172
  | plainText )+ ;
168
173
 
169
174
 
170
- link. ::= [link] ;
175
+ footnoteLink. ::= [link] ;
171
176
 
172
177
 
173
178
  emailLink. ::= "[" inlineText... "]"<NO_WHITESPACE>"(" [email-address] ")"
@@ -234,9 +239,6 @@ const bnf = `
234
239
 
235
240
 
236
241
  className ::= <NO_WHITESPACE>[identifier] ;
237
-
238
-
239
- anchor. ::= ε ;
240
242
 
241
243
 
242
244
  contentsList ::= contentsItem+ ;
@@ -258,6 +260,20 @@ const bnf = `
258
260
  footnotesItem ::= anchor paragraph ;
259
261
 
260
262
 
263
+ indexList ::= indexItem+ ;
264
+
265
+
266
+ indexItem ::= line... indexLink ( comma indexLink )* ;
267
+
268
+
269
+ indexLink ::= [number] ;
270
+
271
+
272
+ comma. ::= "," ;
273
+
274
+
275
+ anchor. ::= ε ;
276
+
261
277
  `;
262
278
 
263
279
  export default bnf;
@@ -28,16 +28,6 @@ export default class MarkdownLexer extends CommonLexer {
28
28
 
29
29
  static DoublyQuotedStringLiteralToken = null;
30
30
 
31
- static fromNothing(Class) {
32
- if (Class === undefined) {
33
- Class = MarkdownLexer; ///
34
- }
35
-
36
- const markdownLexer = CommonLexer.fromNothing(Class);
37
-
38
- return markdownLexer;
39
- }
40
-
41
31
  static fromRules(Class, rules) {
42
32
  if (rules === undefined) {
43
33
  rules = Class; ///
@@ -61,4 +51,14 @@ export default class MarkdownLexer extends CommonLexer {
61
51
 
62
52
  return markdownLexer;
63
53
  }
54
+
55
+ static fromNothing(Class) {
56
+ if (Class === undefined) {
57
+ Class = MarkdownLexer; ///
58
+ }
59
+
60
+ const markdownLexer = CommonLexer.fromNothing(Class);
61
+
62
+ return markdownLexer;
63
+ }
64
64
  }