highmark-markdown 0.0.153 → 0.0.155
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.
- package/example.js +2212 -1446
- package/lib/example/view.js +19 -15
- package/lib/index.js +4 -8
- package/lib/markdown/bnf.js +2 -2
- package/lib/markdown/parser.js +5 -5
- package/lib/node/markdown/anchor.js +7 -1
- package/lib/node/markdown/contents.js +149 -0
- package/lib/node/markdown/contentsItem.js +141 -0
- package/lib/node/markdown/contentsList.js +135 -0
- package/lib/node/markdown/division.js +80 -62
- package/lib/node/markdown/heading/primary.js +134 -0
- package/lib/node/markdown/{quaternaryHeading.js → heading/quaternary.js} +20 -6
- package/lib/node/markdown/{secondaryHeading.js → heading/secondary.js} +20 -6
- package/lib/node/markdown/{tertiaryHeading.js → heading/tertiary.js} +20 -6
- package/lib/node/markdown/{header.js → heading.js} +15 -15
- package/lib/node/markdown/import.js +16 -9
- package/lib/node/markdown/line.js +4 -4
- package/lib/node/markdown/markedText.js +5 -3
- package/lib/node/markdown.js +35 -14
- package/lib/nodeMap.js +7 -7
- package/lib/ruleNameToHTMLMap.js +10 -4
- package/lib/ruleNames.js +16 -6
- package/lib/utilities/childNodes.js +48 -46
- package/lib/utilities/footnotes.js +71 -0
- package/lib/utilities/nodes.js +21 -0
- package/lib/utilities/query.js +30 -3
- package/lib/utilities/string.js +2 -2
- package/lib/utilities/tokens.js +45 -0
- package/lib/utilities/tree.js +172 -0
- package/package.json +6 -6
- package/src/example/view.js +35 -21
- package/src/index.js +1 -2
- package/src/markdown/bnf.js +6 -4
- package/src/markdown/parser.js +1 -1
- package/src/node/markdown/anchor.js +4 -0
- package/src/node/markdown/contents.js +40 -0
- package/src/node/markdown/contentsItem.js +49 -0
- package/src/node/markdown/contentsList.js +35 -0
- package/src/node/markdown/division.js +94 -39
- package/src/node/markdown/heading/primary.js +9 -0
- package/src/node/markdown/heading/quaternary.js +9 -0
- package/src/node/markdown/heading/secondary.js +9 -0
- package/src/node/markdown/heading/tertiary.js +9 -0
- package/src/node/markdown/heading.js +13 -0
- package/src/node/markdown/import.js +22 -7
- package/src/node/markdown/line.js +6 -4
- package/src/node/markdown/markedText.js +4 -4
- package/src/node/markdown.js +48 -18
- package/src/nodeMap.js +7 -7
- package/src/ruleNameToHTMLMap.js +15 -5
- package/src/ruleNames.js +6 -2
- package/src/utilities/childNodes.js +57 -49
- package/src/utilities/{link.js → footnotes.js} +8 -0
- package/src/utilities/{node.js → nodes.js} +0 -4
- package/src/utilities/query.js +32 -1
- package/src/utilities/string.js +1 -2
- package/src/utilities/tokens.js +14 -0
- package/src/utilities/tree.js +139 -0
- package/lib/node/markdown/primaryHeading.js +0 -167
- package/lib/utilities/link.js +0 -63
- package/lib/utilities/node.js +0 -32
- package/src/node/markdown/header.js +0 -14
- package/src/node/markdown/primaryHeading.js +0 -38
- package/src/node/markdown/quaternaryHeading.js +0 -7
- package/src/node/markdown/secondaryHeading.js +0 -7
- package/src/node/markdown/tertiaryHeading.js +0 -7
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "replaceTokens", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return replaceTokens;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function _array_like_to_array(arr, len) {
|
|
12
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
13
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
14
|
+
return arr2;
|
|
15
|
+
}
|
|
16
|
+
function _array_without_holes(arr) {
|
|
17
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
18
|
+
}
|
|
19
|
+
function _iterable_to_array(iter) {
|
|
20
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
21
|
+
}
|
|
22
|
+
function _non_iterable_spread() {
|
|
23
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
24
|
+
}
|
|
25
|
+
function _to_consumable_array(arr) {
|
|
26
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
27
|
+
}
|
|
28
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
29
|
+
if (!o) return;
|
|
30
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
31
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
32
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
33
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
34
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
35
|
+
}
|
|
36
|
+
function replaceTokens(replacedChildNode, replacementTokens, context) {
|
|
37
|
+
var _tokens;
|
|
38
|
+
var tokens = context.tokens, nonTerminalNode = replacedChildNode, lastSignificantToken = nonTerminalNode.getLastSignificantToken(), firstSignificantToken = nonTerminalNode.getFirstSignificantToken(), lastSignificantTokenIndex = tokens.indexOf(lastSignificantToken), firstSignificantTokenIndex = tokens.indexOf(firstSignificantToken), start = firstSignificantTokenIndex, deleteCount = lastSignificantTokenIndex - firstSignificantTokenIndex; ///
|
|
39
|
+
(_tokens = tokens).splice.apply(_tokens, [
|
|
40
|
+
start,
|
|
41
|
+
deleteCount
|
|
42
|
+
].concat(_to_consumable_array(replacementTokens)));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVRva2VucyhyZXBsYWNlZENoaWxkTm9kZSwgcmVwbGFjZW1lbnRUb2tlbnMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyB0b2tlbnMgfSA9IGNvbnRleHQsXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHJlcGxhY2VkQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgIGxhc3RTaWduaWZpY2FudFRva2VuID0gbm9uVGVybWluYWxOb2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuKCksXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vblRlcm1pbmFsTm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHRva2Vucy5pbmRleE9mKGxhc3RTaWduaWZpY2FudFRva2VuKSxcbiAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSB0b2tlbnMuaW5kZXhPZihmaXJzdFNpZ25pZmljYW50VG9rZW4pLFxuICAgICAgICBzdGFydCA9IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4LCAvLy9cbiAgICAgICAgZGVsZXRlQ291bnQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IC0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCAuLi5yZXBsYWNlbWVudFRva2Vucyk7XG59XG4iXSwibmFtZXMiOlsicmVwbGFjZVRva2VucyIsInJlcGxhY2VkQ2hpbGROb2RlIiwicmVwbGFjZW1lbnRUb2tlbnMiLCJjb250ZXh0IiwidG9rZW5zIiwibm9uVGVybWluYWxOb2RlIiwibGFzdFNpZ25pZmljYW50VG9rZW4iLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbiIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJpbmRleE9mIiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBRWdCQTs7O2VBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQVQsU0FBU0EsY0FBY0MsaUJBQWlCLEVBQUVDLGlCQUFpQixFQUFFQyxPQUFPO1FBVXpFQztJQVRBLElBQU0sQUFBRUEsU0FBV0QsUUFBWEMsUUFDRkMsa0JBQWtCSixtQkFDbEJLLHVCQUF1QkQsZ0JBQWdCRSx1QkFBdUIsSUFDOURDLHdCQUF3QkgsZ0JBQWdCSSx3QkFBd0IsSUFDaEVDLDRCQUE0Qk4sT0FBT08sT0FBTyxDQUFDTCx1QkFDM0NNLDZCQUE2QlIsT0FBT08sT0FBTyxDQUFDSCx3QkFDNUNLLFFBQVFELDRCQUNSRSxjQUFjSiw0QkFBNEJFLDRCQUE0QixHQUFHO0lBRS9FUixDQUFBQSxVQUFBQSxRQUFPVyxNQUFNLENBQWJYLE1BQUFBLFNBQUFBO1FBQWNTO1FBQU9DO0tBQWtDLENBQXZEVixPQUFrQyxxQkFBR0Y7QUFDdkMifQ==
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "nestNodes", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return nestNodes;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _necessary = require("necessary");
|
|
12
|
+
function _class_call_check(instance, Constructor) {
|
|
13
|
+
if (!(instance instanceof Constructor)) {
|
|
14
|
+
throw new TypeError("Cannot call a class as a function");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function _defineProperties(target, props) {
|
|
18
|
+
for(var i = 0; i < props.length; i++){
|
|
19
|
+
var descriptor = props[i];
|
|
20
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
21
|
+
descriptor.configurable = true;
|
|
22
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
23
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
27
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
28
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
29
|
+
return Constructor;
|
|
30
|
+
}
|
|
31
|
+
var first = _necessary.arrayUtilities.first, last = _necessary.arrayUtilities.last;
|
|
32
|
+
function nestNodes(nodes) {
|
|
33
|
+
var nestedNodesStack = NestedNodeStack.fromNothing();
|
|
34
|
+
nodes.forEach(function(node) {
|
|
35
|
+
var level = node.getLevel();
|
|
36
|
+
var nestedNodesStackLevel = nestedNodesStack.getLevel();
|
|
37
|
+
while(nestedNodesStackLevel < level){
|
|
38
|
+
nestedNodesStackLevel = nestedNodesStack.increment();
|
|
39
|
+
}
|
|
40
|
+
while(nestedNodesStackLevel > level){
|
|
41
|
+
nestedNodesStackLevel = nestedNodesStack.decrement();
|
|
42
|
+
}
|
|
43
|
+
var nestedNode = NestedNode.fromNode(node);
|
|
44
|
+
nestedNodesStack.addNestedNode(nestedNode);
|
|
45
|
+
});
|
|
46
|
+
var nestedNode = nestedNodesStack.getNestedNode();
|
|
47
|
+
return nestedNode;
|
|
48
|
+
}
|
|
49
|
+
var NestedNode = /*#__PURE__*/ function() {
|
|
50
|
+
function NestedNode(node, childNestedNodes) {
|
|
51
|
+
_class_call_check(this, NestedNode);
|
|
52
|
+
this.node = node;
|
|
53
|
+
this.childNestedNodes = childNestedNodes;
|
|
54
|
+
}
|
|
55
|
+
_create_class(NestedNode, [
|
|
56
|
+
{
|
|
57
|
+
key: "getNode",
|
|
58
|
+
value: function getNode() {
|
|
59
|
+
return this.node;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
key: "getChildNestedNodes",
|
|
64
|
+
value: function getChildNestedNodes() {
|
|
65
|
+
return this.childNestedNodes;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: "addNestedNode",
|
|
70
|
+
value: function addNestedNode(nestedNode) {
|
|
71
|
+
var childNestedNode = nestedNode; ///
|
|
72
|
+
this.childNestedNodes.push(childNestedNode);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
], [
|
|
76
|
+
{
|
|
77
|
+
key: "fromNode",
|
|
78
|
+
value: function fromNode(node) {
|
|
79
|
+
var childNestedNodes = [], nestedNode = new NestedNode(node, childNestedNodes);
|
|
80
|
+
return nestedNode;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: "fromNothing",
|
|
85
|
+
value: function fromNothing() {
|
|
86
|
+
var node = null, childNestedNodes = [], nestedNode = new NestedNode(node, childNestedNodes);
|
|
87
|
+
return nestedNode;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
]);
|
|
91
|
+
return NestedNode;
|
|
92
|
+
}();
|
|
93
|
+
var NestedNodeStack = /*#__PURE__*/ function() {
|
|
94
|
+
function NestedNodeStack(nestedNodes) {
|
|
95
|
+
_class_call_check(this, NestedNodeStack);
|
|
96
|
+
this.nestedNodes = nestedNodes;
|
|
97
|
+
}
|
|
98
|
+
_create_class(NestedNodeStack, [
|
|
99
|
+
{
|
|
100
|
+
key: "getNestedNodes",
|
|
101
|
+
value: function getNestedNodes() {
|
|
102
|
+
return this.nestedNodes;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
key: "getLastNestedNode",
|
|
107
|
+
value: function getLastNestedNode() {
|
|
108
|
+
var lastNestedNode = last(this.nestedNodes);
|
|
109
|
+
return lastNestedNode;
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: "getNestedNode",
|
|
114
|
+
value: function getNestedNode() {
|
|
115
|
+
var firstNestedNode = first(this.nestedNodes), nestedNode = firstNestedNode; ///
|
|
116
|
+
return nestedNode;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
key: "getLevel",
|
|
121
|
+
value: function getLevel() {
|
|
122
|
+
var nestedNodesLength = this.nestedNodes.length, level = nestedNodesLength; ///
|
|
123
|
+
return level;
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
key: "increment",
|
|
128
|
+
value: function increment() {
|
|
129
|
+
var nestedNode = NestedNode.fromNothing();
|
|
130
|
+
this.addNestedNode(nestedNode);
|
|
131
|
+
var level = this.getLevel();
|
|
132
|
+
return level;
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
key: "decrement",
|
|
137
|
+
value: function decrement() {
|
|
138
|
+
this.removeNestedNode();
|
|
139
|
+
var level = this.getLevel();
|
|
140
|
+
return level;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
key: "addNestedNode",
|
|
145
|
+
value: function addNestedNode(nestedNode) {
|
|
146
|
+
var lastNestedNode = this.getLastNestedNode();
|
|
147
|
+
lastNestedNode.addNestedNode(nestedNode);
|
|
148
|
+
this.nestedNodes.push(nestedNode);
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
key: "removeNestedNode",
|
|
153
|
+
value: function removeNestedNode() {
|
|
154
|
+
var nestedNode = this.nestedNodes.pop();
|
|
155
|
+
return nestedNode;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
], [
|
|
159
|
+
{
|
|
160
|
+
key: "fromNothing",
|
|
161
|
+
value: function fromNothing() {
|
|
162
|
+
var nestedNode = NestedNode.fromNothing(), nestedNodes = [
|
|
163
|
+
nestedNode
|
|
164
|
+
], nestedNodesStack = new NestedNodeStack(nestedNodes);
|
|
165
|
+
return nestedNodesStack;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
]);
|
|
169
|
+
return NestedNodeStack;
|
|
170
|
+
}();
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdHJlZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gbmVzdE5vZGVzKG5vZGVzKSB7XG4gIGNvbnN0IG5lc3RlZE5vZGVzU3RhY2sgPSBOZXN0ZWROb2RlU3RhY2suZnJvbU5vdGhpbmcoKTtcblxuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgY29uc3QgbGV2ZWwgPSBub2RlLmdldExldmVsKCk7XG5cbiAgICBsZXQgbmVzdGVkTm9kZXNTdGFja0xldmVsID0gbmVzdGVkTm9kZXNTdGFjay5nZXRMZXZlbCgpXG5cbiAgICB3aGlsZSAobmVzdGVkTm9kZXNTdGFja0xldmVsIDwgbGV2ZWwpIHtcbiAgICAgIG5lc3RlZE5vZGVzU3RhY2tMZXZlbCA9IG5lc3RlZE5vZGVzU3RhY2suaW5jcmVtZW50KCk7XG4gICAgfVxuXG4gICAgd2hpbGUgKG5lc3RlZE5vZGVzU3RhY2tMZXZlbCA+IGxldmVsKSB7XG4gICAgICBuZXN0ZWROb2Rlc1N0YWNrTGV2ZWwgPSBuZXN0ZWROb2Rlc1N0YWNrLmRlY3JlbWVudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IG5lc3RlZE5vZGUgPSBOZXN0ZWROb2RlLmZyb21Ob2RlKG5vZGUpO1xuXG4gICAgbmVzdGVkTm9kZXNTdGFjay5hZGROZXN0ZWROb2RlKG5lc3RlZE5vZGUpO1xuICB9KTtcblxuICBjb25zdCBuZXN0ZWROb2RlID0gbmVzdGVkTm9kZXNTdGFjay5nZXROZXN0ZWROb2RlKCk7XG5cbiAgcmV0dXJuIG5lc3RlZE5vZGU7XG59XG5cbmNsYXNzIE5lc3RlZE5vZGUge1xuICBjb25zdHJ1Y3Rvcihub2RlLCBjaGlsZE5lc3RlZE5vZGVzKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLmNoaWxkTmVzdGVkTm9kZXMgPSBjaGlsZE5lc3RlZE5vZGVzO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROZXN0ZWROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5lc3RlZE5vZGVzO1xuICB9XG5cbiAgYWRkTmVzdGVkTm9kZShuZXN0ZWROb2RlKSB7XG4gICAgY29uc3QgY2hpbGROZXN0ZWROb2RlID0gbmVzdGVkTm9kZTsgLy8vXG5cbiAgICB0aGlzLmNoaWxkTmVzdGVkTm9kZXMucHVzaChjaGlsZE5lc3RlZE5vZGUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob2RlKG5vZGUpIHtcbiAgICBjb25zdCBjaGlsZE5lc3RlZE5vZGVzID0gW10sXG4gICAgICAgICAgbmVzdGVkTm9kZSA9IG5ldyBOZXN0ZWROb2RlKG5vZGUsIGNoaWxkTmVzdGVkTm9kZXMpO1xuXG4gICAgcmV0dXJuIG5lc3RlZE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3Qgbm9kZSA9IG51bGwsXG4gICAgICAgICAgY2hpbGROZXN0ZWROb2RlcyA9IFtdLFxuICAgICAgICAgIG5lc3RlZE5vZGUgPSBuZXcgTmVzdGVkTm9kZShub2RlLCBjaGlsZE5lc3RlZE5vZGVzKTtcblxuICAgIHJldHVybiBuZXN0ZWROb2RlO1xuICB9XG59XG5cbmNsYXNzIE5lc3RlZE5vZGVTdGFjayB7XG4gIGNvbnN0cnVjdG9yKG5lc3RlZE5vZGVzKSB7XG4gICAgdGhpcy5uZXN0ZWROb2RlcyA9IG5lc3RlZE5vZGVzO1xuICB9XG5cbiAgZ2V0TmVzdGVkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVzdGVkTm9kZXM7XG4gIH1cblxuICBnZXRMYXN0TmVzdGVkTm9kZSgpIHtcbiAgICBjb25zdCBsYXN0TmVzdGVkTm9kZSA9IGxhc3QodGhpcy5uZXN0ZWROb2Rlcyk7XG5cbiAgICByZXR1cm4gbGFzdE5lc3RlZE5vZGU7XG4gIH1cblxuICBnZXROZXN0ZWROb2RlKCkge1xuICAgIGNvbnN0IGZpcnN0TmVzdGVkTm9kZSA9IGZpcnN0KHRoaXMubmVzdGVkTm9kZXMpLFxuICAgICAgICAgIG5lc3RlZE5vZGUgPSBmaXJzdE5lc3RlZE5vZGU7ICAvLy9cblxuICAgIHJldHVybiBuZXN0ZWROb2RlO1xuICB9XG5cbiAgZ2V0TGV2ZWwoKSB7XG4gICAgY29uc3QgbmVzdGVkTm9kZXNMZW5ndGggPSB0aGlzLm5lc3RlZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBsZXZlbCA9IG5lc3RlZE5vZGVzTGVuZ3RoOyAgLy8vXG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH1cblxuICBpbmNyZW1lbnQoKSB7XG4gICAgY29uc3QgbmVzdGVkTm9kZSA9IE5lc3RlZE5vZGUuZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMuYWRkTmVzdGVkTm9kZShuZXN0ZWROb2RlKTtcblxuICAgIGNvbnN0IGxldmVsID0gdGhpcy5nZXRMZXZlbCgpO1xuXG4gICAgcmV0dXJuIGxldmVsO1xuICB9XG5cbiAgZGVjcmVtZW50KCkge1xuICAgIHRoaXMucmVtb3ZlTmVzdGVkTm9kZSgpO1xuXG4gICAgY29uc3QgbGV2ZWwgPSB0aGlzLmdldExldmVsKCk7XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH1cblxuICBhZGROZXN0ZWROb2RlKG5lc3RlZE5vZGUpIHtcbiAgICBjb25zdCBsYXN0TmVzdGVkTm9kZSA9IHRoaXMuZ2V0TGFzdE5lc3RlZE5vZGUoKTtcblxuICAgIGxhc3ROZXN0ZWROb2RlLmFkZE5lc3RlZE5vZGUobmVzdGVkTm9kZSk7XG5cbiAgICB0aGlzLm5lc3RlZE5vZGVzLnB1c2gobmVzdGVkTm9kZSk7XG4gIH1cblxuICByZW1vdmVOZXN0ZWROb2RlKCkge1xuICAgIGNvbnN0IG5lc3RlZE5vZGUgPSB0aGlzLm5lc3RlZE5vZGVzLnBvcCgpO1xuXG4gICAgcmV0dXJuIG5lc3RlZE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgbmVzdGVkTm9kZSA9IE5lc3RlZE5vZGUuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICBuZXN0ZWROb2RlcyA9IFtcbiAgICAgICAgICAgIG5lc3RlZE5vZGVcbiAgICAgICAgICBdLFxuICAgICAgICAgIG5lc3RlZE5vZGVzU3RhY2sgPSBuZXcgTmVzdGVkTm9kZVN0YWNrKG5lc3RlZE5vZGVzKTtcblxuICAgIHJldHVybiBuZXN0ZWROb2Rlc1N0YWNrO1xuICB9XG59XG4iXSwibmFtZXMiOlsibmVzdE5vZGVzIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImxhc3QiLCJub2RlcyIsIm5lc3RlZE5vZGVzU3RhY2siLCJOZXN0ZWROb2RlU3RhY2siLCJmcm9tTm90aGluZyIsImZvckVhY2giLCJub2RlIiwibGV2ZWwiLCJnZXRMZXZlbCIsIm5lc3RlZE5vZGVzU3RhY2tMZXZlbCIsImluY3JlbWVudCIsImRlY3JlbWVudCIsIm5lc3RlZE5vZGUiLCJOZXN0ZWROb2RlIiwiZnJvbU5vZGUiLCJhZGROZXN0ZWROb2RlIiwiZ2V0TmVzdGVkTm9kZSIsImNoaWxkTmVzdGVkTm9kZXMiLCJnZXROb2RlIiwiZ2V0Q2hpbGROZXN0ZWROb2RlcyIsImNoaWxkTmVzdGVkTm9kZSIsInB1c2giLCJuZXN0ZWROb2RlcyIsImdldE5lc3RlZE5vZGVzIiwiZ2V0TGFzdE5lc3RlZE5vZGUiLCJsYXN0TmVzdGVkTm9kZSIsImZpcnN0TmVzdGVkTm9kZSIsIm5lc3RlZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwicmVtb3ZlTmVzdGVkTm9kZSIsInBvcCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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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.
|
|
4
|
+
"version": "0.0.155",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/highmark-markdown",
|
|
7
7
|
"description": "Highmark's Markdown.",
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
"url": "https://github.com/djalbat/highmark-markdown"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"necessary": "^13.
|
|
14
|
-
"occam-lexers": "^22.0.
|
|
15
|
-
"occam-parsers": "^22.0.
|
|
16
|
-
"occam-query": "^3.1.
|
|
13
|
+
"necessary": "^13.6.1",
|
|
14
|
+
"occam-lexers": "^22.0.17",
|
|
15
|
+
"occam-parsers": "^22.0.13",
|
|
16
|
+
"occam-query": "^3.1.151"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@swc/core": "^1.2.50",
|
|
20
20
|
"easy": "^16.0.19",
|
|
21
|
-
"easy-layout": "^6.0.
|
|
21
|
+
"easy-layout": "^6.0.140",
|
|
22
22
|
"easy-with-style": "^3.0.336",
|
|
23
23
|
"esbuild": "^0.9.2",
|
|
24
24
|
"express": "^4.17.1",
|
package/src/example/view.js
CHANGED
|
@@ -40,15 +40,26 @@ class View extends Element {
|
|
|
40
40
|
let parseTree = null;
|
|
41
41
|
|
|
42
42
|
if (node !== null) {
|
|
43
|
-
const
|
|
43
|
+
const divisionMarkdownNode = node, ///
|
|
44
|
+
divisionClassName = DOCUMENT_DIVISION_CLASS_NAME;
|
|
45
|
+
|
|
46
|
+
divisionMarkdownNode.setDivisionClassName(divisionClassName);
|
|
47
|
+
|
|
48
|
+
const parentNode = null,
|
|
44
49
|
indent = EMPTY_STRING,
|
|
45
50
|
context = {
|
|
46
51
|
tokens,
|
|
47
|
-
importer
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
importer
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
divisionMarkdownNode.resolveImports(parentNode, context);
|
|
56
|
+
|
|
57
|
+
divisionMarkdownNode.createContents(context);
|
|
58
|
+
|
|
59
|
+
divisionMarkdownNode.createFootnotes(context);
|
|
60
|
+
|
|
61
|
+
const html = divisionMarkdownNode.asHTML(indent, context),
|
|
62
|
+
domElement = divisionMarkdownNode.createDOMElement(context);
|
|
52
63
|
|
|
53
64
|
this.xmpHTML(html);
|
|
54
65
|
|
|
@@ -124,7 +135,10 @@ class View extends Element {
|
|
|
124
135
|
this.update();
|
|
125
136
|
}
|
|
126
137
|
|
|
127
|
-
static initialMarkdown = `@
|
|
138
|
+
static initialMarkdown = `@contents 3
|
|
139
|
+
|
|
140
|
+
@import cover.mds
|
|
141
|
+
|
|
128
142
|
`;
|
|
129
143
|
|
|
130
144
|
static tagName = "div";
|
|
@@ -140,24 +154,24 @@ export default withStyle(View)`
|
|
|
140
154
|
|
|
141
155
|
`;
|
|
142
156
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
Hello, world!
|
|
157
|
+
function importer(path, context) {
|
|
158
|
+
const content = `
|
|
146
159
|
|
|
147
|
-
|
|
160
|
+
# Primary heading
|
|
148
161
|
|
|
149
|
-
|
|
150
|
-
const content = divisionContent, ///
|
|
162
|
+
` ,
|
|
151
163
|
tokens = markdownLexer.tokenise(content),
|
|
152
164
|
node = markdownParser.parse(tokens),
|
|
153
|
-
|
|
165
|
+
divisionMarkdownNode = node, ///
|
|
166
|
+
divisionClassName = FRONT_MATTER_DIVISION_CLASS_NAME;
|
|
154
167
|
|
|
155
|
-
|
|
156
|
-
tokens,
|
|
157
|
-
divisionClassName
|
|
158
|
-
}
|
|
168
|
+
divisionMarkdownNode.setDivisionClassName(divisionClassName);
|
|
159
169
|
|
|
160
|
-
const
|
|
170
|
+
const importedNode = node, ///
|
|
171
|
+
importedTokens = tokens; ///
|
|
161
172
|
|
|
162
|
-
|
|
163
|
-
|
|
173
|
+
Object.assign(context, {
|
|
174
|
+
importedNode,
|
|
175
|
+
importedTokens
|
|
176
|
+
});
|
|
177
|
+
}
|
package/src/index.js
CHANGED
|
@@ -4,10 +4,9 @@ export { default as nodeMap } from "./nodeMap";
|
|
|
4
4
|
export { default as ruleNames } from "./ruleNames";
|
|
5
5
|
export { default as tokenTypes } from "./tokenTypes";
|
|
6
6
|
export { default as MarkdownNode } from "./node/markdown";
|
|
7
|
-
export { default as nodeUtilities } from "./utilities/node";
|
|
8
7
|
export { default as MarkdownLexer } from "./markdown/lexer";
|
|
9
|
-
export { default as linkUtilities } from "./utilities/link";
|
|
10
8
|
export { default as MarkdownParser } from "./markdown/parser";
|
|
11
9
|
export { default as queryUtilities } from "./utilities/query";
|
|
12
10
|
export { default as ruleNameToHTMLMap } from "./ruleNameToHTMLMap";
|
|
11
|
+
export { default as footnotesUtilities } from "./utilities/footnotes";
|
|
13
12
|
export { default as FootnotesListMarkdownNode } from "./node/markdown/footnotesList";
|
package/src/markdown/bnf.js
CHANGED
|
@@ -5,7 +5,9 @@ const bnf = `
|
|
|
5
5
|
division ::= ( subDivision | endOfLine | error )+ ;
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
subDivision.. ::= ( endOfLine | <START_OF_CONTENT> ) (
|
|
8
|
+
subDivision.. ::= ( endOfLine | <START_OF_CONTENT> ) ( import
|
|
9
|
+
|
|
10
|
+
| contents
|
|
9
11
|
|
|
10
12
|
| primaryHeading
|
|
11
13
|
|
|
@@ -36,9 +38,6 @@ const bnf = `
|
|
|
36
38
|
error. ::= . ;
|
|
37
39
|
|
|
38
40
|
|
|
39
|
-
header ::= import+ ;
|
|
40
|
-
|
|
41
|
-
|
|
42
41
|
primaryHeading ::= [single-hash] line ;
|
|
43
42
|
|
|
44
43
|
|
|
@@ -81,6 +80,9 @@ const bnf = `
|
|
|
81
80
|
import ::= "@"<NO_WHITESPACE>"import" [path] endOfLine ;
|
|
82
81
|
|
|
83
82
|
|
|
83
|
+
contents ::= "@"<NO_WHITESPACE>"contents" [number]? endOfLine ;
|
|
84
|
+
|
|
85
|
+
|
|
84
86
|
tableHead ::= tableHeadRow ;
|
|
85
87
|
|
|
86
88
|
|
package/src/markdown/parser.js
CHANGED
|
@@ -5,7 +5,7 @@ import { CommonParser } from "occam-parsers";
|
|
|
5
5
|
import bnf from "./bnf";
|
|
6
6
|
import nodeMap from "../nodeMap";
|
|
7
7
|
|
|
8
|
-
import { setNonTerminalNodes } from "../utilities/
|
|
8
|
+
import { setNonTerminalNodes } from "../utilities/nodes";
|
|
9
9
|
|
|
10
10
|
export default class MarkdownParser extends CommonParser {
|
|
11
11
|
static bnf = bnf;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
const { fourth } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class ContentsMarkdownNode extends MarkdownNode {
|
|
10
|
+
asHTML(indent, context) {
|
|
11
|
+
const html = null;
|
|
12
|
+
|
|
13
|
+
return html;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
createDOMElement(context) {
|
|
17
|
+
const domElement = null;
|
|
18
|
+
|
|
19
|
+
return domElement;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
maximumLevel(context) {
|
|
23
|
+
let maximumLevel = 1;
|
|
24
|
+
|
|
25
|
+
const childNodes = this.getChildNodes(),
|
|
26
|
+
childNodesLength = childNodes.length;
|
|
27
|
+
|
|
28
|
+
if (childNodesLength === 5) {
|
|
29
|
+
const fourthChildNode = fourth(childNodes),
|
|
30
|
+
numberTerminalNode = fourthChildNode, ///
|
|
31
|
+
numberTerminalNodeContent = numberTerminalNode.getContent();
|
|
32
|
+
|
|
33
|
+
maximumLevel = Number(numberTerminalNodeContent);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return maximumLevel;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsMarkdownNode, ruleName, childNodes, opacity); }
|
|
40
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import MarkdownNode from "../../node/markdown";
|
|
6
|
+
|
|
7
|
+
import { CONTENTS_ITEM_RULE_NAME } from "../../ruleNames";
|
|
8
|
+
|
|
9
|
+
const { push } = arrayUtilities;
|
|
10
|
+
|
|
11
|
+
export default class ContentsItemMarkdownNode extends MarkdownNode {
|
|
12
|
+
static fromNestedHeadingMarkdownNodeAndContentsListMarkdownNode(nestedHeadingMarkdownNode, ContentsListMarkdownNode, context) {
|
|
13
|
+
const node = nestedHeadingMarkdownNode.getNode(),
|
|
14
|
+
childNestedNodes = nestedHeadingMarkdownNode.getChildNestedNodes(),
|
|
15
|
+
nestedHeadingMarkdownNodes = childNestedNodes, ///
|
|
16
|
+
contentsListMarkdownNode = ContentsListMarkdownNode.fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes);
|
|
17
|
+
|
|
18
|
+
const ruleName = CONTENTS_ITEM_RULE_NAME,
|
|
19
|
+
childNodes = [];
|
|
20
|
+
|
|
21
|
+
if (node !== null) {
|
|
22
|
+
const headingMarkdownNode = node, ///
|
|
23
|
+
headingMarkdownNodeChildNodes = clone(headingMarkdownNode.getChildNodes()); ///
|
|
24
|
+
|
|
25
|
+
push(childNodes, headingMarkdownNodeChildNodes);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (contentsListMarkdownNode !== null) {
|
|
29
|
+
const childNode = contentsListMarkdownNode; ///
|
|
30
|
+
|
|
31
|
+
childNodes.push(childNode);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const opacity = null,
|
|
35
|
+
contentsItemMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsItemMarkdownNode, ruleName, childNodes, opacity);
|
|
36
|
+
|
|
37
|
+
return contentsItemMarkdownNode;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function clone(nodes) {
|
|
42
|
+
nodes = nodes.map((node) => { ///
|
|
43
|
+
node = node.clone(); ///
|
|
44
|
+
|
|
45
|
+
return node;
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return nodes;
|
|
49
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MarkdownNode from "../../node/markdown";
|
|
4
|
+
import ContentsItemMarkdownNode from "../../node/markdown/contentsItem";
|
|
5
|
+
|
|
6
|
+
import { CONTENTS_LIST_RULE_NAME } from "../../ruleNames";
|
|
7
|
+
|
|
8
|
+
export default class ContentsListMarkdownNode extends MarkdownNode {
|
|
9
|
+
static fromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context) {
|
|
10
|
+
let contentsListMarkdownNode = null;
|
|
11
|
+
|
|
12
|
+
const nestedHeadingMarkdownNodesLength = nestedHeadingMarkdownNodes.length;
|
|
13
|
+
|
|
14
|
+
if (nestedHeadingMarkdownNodesLength > 0) {
|
|
15
|
+
const ruleName = CONTENTS_LIST_RULE_NAME,
|
|
16
|
+
childNodes = childNodesFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context),
|
|
17
|
+
opacity = null;
|
|
18
|
+
|
|
19
|
+
contentsListMarkdownNode = MarkdownNode.fromRuleNameChildNodesAndOpacity(ContentsListMarkdownNode, ruleName, childNodes, opacity);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return contentsListMarkdownNode;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function childNodesFromNestedHeadingMarkdownNodes(nestedHeadingMarkdownNodes, context) {
|
|
27
|
+
const childNodes = nestedHeadingMarkdownNodes.map((nestedHeadingMarkdownNode) => {
|
|
28
|
+
const contentsItemMarkdownNode = ContentsItemMarkdownNode.fromNestedHeadingMarkdownNodeAndContentsListMarkdownNode(nestedHeadingMarkdownNode, ContentsListMarkdownNode, context),
|
|
29
|
+
childNode = contentsItemMarkdownNode; ///
|
|
30
|
+
|
|
31
|
+
return childNode;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return childNodes;
|
|
35
|
+
}
|