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.
- package/example.js +2972 -865
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/elementMap.js +4 -4
- package/lib/example/constants.js +6 -2
- package/lib/example/view.js +5 -4
- package/lib/markdown/bnf.js +2 -2
- package/lib/mixins/node.js +6 -1
- package/lib/node/markdown/contentsItem.js +8 -30
- package/lib/node/markdown/contentsLink.js +9 -30
- package/lib/node/markdown/contentsList.js +8 -33
- package/lib/node/markdown/directive/embee.js +8 -8
- package/lib/node/markdown/division.js +90 -103
- package/lib/node/markdown/{footnoteItem.js → footnotesItem.js} +12 -12
- package/lib/node/markdown/footnotesList.js +9 -47
- package/lib/node/markdown/subDivision.js +2 -3
- package/lib/node/markdown.js +25 -1
- package/lib/nodeMap.js +6 -3
- package/lib/replacement/contentsItem.js +145 -0
- package/lib/replacement/contentsLink.js +157 -0
- package/lib/replacement/contentsList.js +212 -0
- package/lib/replacement/footnote.js +122 -0
- package/lib/replacement/footnotesItem.js +140 -0
- package/lib/replacement/footnotesList.js +189 -0
- package/lib/replacement/imported.js +151 -0
- package/lib/replacement/line.js +127 -0
- package/lib/replacement/subDivision/contentsDirective.js +126 -0
- package/lib/replacement/subDivision/footnote.js +126 -0
- package/lib/replacement/subDivision/footnotesDirective.js +126 -0
- package/lib/replacement/subDivision/pageNumberDirective.js +126 -0
- package/lib/replacement/subDivision.js +175 -0
- package/lib/replacement.js +139 -46
- package/lib/ruleNames.js +6 -6
- package/lib/utilities/markdown.js +8 -8
- package/lib/utilities/node.js +1 -72
- package/lib/utilities/replacement.js +104 -0
- package/package.json +1 -1
- package/src/defaultMarkdownStyle.js +20 -1
- package/src/elementMap.js +5 -5
- package/src/example/constants.js +2 -1
- package/src/example/view.js +13 -12
- package/src/markdown/bnf.js +23 -9
- package/src/mixins/node.js +10 -0
- package/src/node/markdown/contentsItem.js +7 -38
- package/src/node/markdown/contentsLink.js +8 -41
- package/src/node/markdown/contentsList.js +7 -39
- package/src/node/markdown/directive/embee.js +9 -9
- package/src/node/markdown/division.js +90 -158
- package/src/node/markdown/{footnoteItem.js → footnotesItem.js} +5 -5
- package/src/node/markdown/footnotesList.js +10 -78
- package/src/node/markdown/subDivision.js +1 -5
- package/src/node/markdown.js +28 -0
- package/src/nodeMap.js +12 -3
- package/src/replacement/contentsItem.js +49 -0
- package/src/replacement/contentsLink.js +29 -0
- package/src/replacement/contentsList.js +111 -0
- package/src/replacement/footnote.js +16 -0
- package/src/replacement/footnotesItem.js +38 -0
- package/src/replacement/footnotesList.js +73 -0
- package/src/replacement/imported.js +13 -0
- package/src/replacement/line.js +14 -0
- package/src/replacement/subDivision/contentsDirective.js +20 -0
- package/src/replacement/subDivision/footnote.js +20 -0
- package/src/replacement/subDivision/footnotesDirective.js +20 -0
- package/src/replacement/subDivision/pageNumberDirective.js +20 -0
- package/src/replacement/subDivision.js +42 -0
- package/src/replacement.js +108 -53
- package/src/ruleNames.js +2 -2
- package/src/utilities/markdown.js +9 -9
- package/src/utilities/node.js +0 -48
- 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.
|
|
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
|
-
|
|
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"
|
package/src/example/constants.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export const EMPTY_STRING = "";
|
|
4
|
-
export const LINES_PER_PAGE =
|
|
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";
|
package/src/example/view.js
CHANGED
|
@@ -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
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
static initialMarkdown = `@include introduction.md
|
|
262
|
+
|
|
263
|
+
## Contents
|
|
264
|
+
|
|
265
|
+
@contents
|
|
264
266
|
|
|
265
|
-
|
|
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 = `#
|
|
291
|
+
const content = `# Introduction
|
|
291
292
|
`,
|
|
292
293
|
startOfContent = true,
|
|
293
294
|
startRule = markdownParser.getStartRule(),
|
package/src/markdown/bnf.js
CHANGED
|
@@ -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;
|
package/src/mixins/node.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
15
|
-
super(ruleName, childNodes, opacity, precedence,
|
|
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
|
-
|
|
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
|
-
|
|
38
|
+
lineMarkdownNode
|
|
68
39
|
],
|
|
69
40
|
opacity = null,
|
|
70
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
12
|
-
let
|
|
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
|
-
|
|
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
|
|
36
|
+
return importedReplacement;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
filePath(context) {
|