@diplodoc/transform 4.60.3 → 4.60.4
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/dist/css/_yfm-only.css.map +1 -1
- package/dist/css/_yfm-only.min.css.map +1 -1
- package/dist/css/base.css.map +1 -1
- package/dist/css/base.min.css.map +1 -1
- package/dist/css/print.css.map +1 -1
- package/dist/css/yfm.css +1 -3
- package/dist/css/yfm.css.map +3 -3
- package/dist/css/yfm.min.css +1 -1
- package/dist/css/yfm.min.css.map +3 -3
- package/dist/js/yfm.js +17 -39
- package/dist/js/yfm.js.map +4 -4
- package/dist/js/yfm.min.js +1 -1
- package/dist/js/yfm.min.js.map +4 -4
- package/lib/plugins/meta.d.ts +2 -2
- package/lib/plugins/meta.js +50 -5
- package/lib/plugins/meta.js.map +1 -1
- package/package.json +2 -3
- package/src/transform/plugins/meta.ts +67 -3
package/lib/plugins/meta.js
CHANGED
|
@@ -1,8 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
const js_yaml_1 = require("js-yaml");
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
const SEP = '---';
|
|
5
|
+
const meta = (md) => {
|
|
6
|
+
const mdAny = md;
|
|
7
|
+
mdAny.meta = mdAny.meta || {};
|
|
8
|
+
const getLine = (state, line) => state.src.slice(state.bMarks[line], state.eMarks[line]);
|
|
9
|
+
md.block.ruler.before('code', 'meta', (state, startLine, endLine) => {
|
|
10
|
+
if (startLine !== 0 || state.blkIndent !== 0) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (state.tShift[startLine] < 0) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (getLine(state, startLine).trim() !== SEP) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
let line = startLine + 1;
|
|
20
|
+
const lines = [];
|
|
21
|
+
let found = false;
|
|
22
|
+
while (line < endLine) {
|
|
23
|
+
const str = getLine(state, line);
|
|
24
|
+
if (str.trim() === SEP) {
|
|
25
|
+
found = true;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
if (state.tShift[line] < 0) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
lines.push(str);
|
|
32
|
+
line++;
|
|
33
|
+
}
|
|
34
|
+
if (!found) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
let data;
|
|
38
|
+
try {
|
|
39
|
+
data = (0, js_yaml_1.load)(lines.join('\n')) || {};
|
|
40
|
+
}
|
|
41
|
+
catch (_a) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (typeof data !== 'object' || data === null || Array.isArray(data)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
mdAny.meta = data;
|
|
48
|
+
state.line = line + 1;
|
|
49
|
+
return true;
|
|
50
|
+
}, { alt: [] });
|
|
4
51
|
};
|
|
5
|
-
|
|
6
|
-
const markdown_it_meta_1 = __importDefault(require("markdown-it-meta"));
|
|
7
|
-
module.exports = markdown_it_meta_1.default;
|
|
52
|
+
module.exports = meta;
|
|
8
53
|
//# sourceMappingURL=meta.js.map
|
package/lib/plugins/meta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/transform/plugins/meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/transform/plugins/meta.ts"],"names":[],"mappings":";AAEA,qCAA6B;AAE7B,uDAAuD;AAEvD,MAAM,GAAG,GAAG,KAAK,CAAC;AAElB,MAAM,IAAI,GAAuB,CAAC,EAAE,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,EAAS,CAAC;IACxB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAE9B,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,IAAY,EAAE,EAAE,CACzC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CACjB,MAAM,EACN,MAAM,EACN,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAC1B,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE;YAC1C,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;QACzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,OAAO,IAAI,GAAG,OAAO,EAAE;YACnB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE;gBACpB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;aACT;YACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACxB,OAAO,KAAK,CAAC;aAChB;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,EAAE,CAAC;SACV;QAED,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAa,CAAC;QAClB,IAAI;YACA,IAAI,GAAG,IAAA,cAAI,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;SACvC;QAAC,WAAM;YACJ,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClE,OAAO,KAAK,CAAC;SAChB;QAED,KAAK,CAAC,IAAI,GAAG,IAA+B,CAAC;QAC7C,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC,EACD,EAAC,GAAG,EAAE,EAAE,EAAC,CACZ,CAAC;AACN,CAAC,CAAC;AAEF,iBAAS,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diplodoc/transform",
|
|
3
|
-
"version": "4.60.
|
|
3
|
+
"version": "4.60.4",
|
|
4
4
|
"description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"markdown",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"prepare": "husky"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@diplodoc/cut-extension": "^0.
|
|
52
|
+
"@diplodoc/cut-extension": "^1.0.0",
|
|
53
53
|
"@diplodoc/file-extension": "^0.2.1",
|
|
54
54
|
"@diplodoc/tabs-extension": "^3.7.2",
|
|
55
55
|
"@diplodoc/utils": "^2.1.0",
|
|
@@ -64,7 +64,6 @@
|
|
|
64
64
|
"markdown-it": "^13.0.2",
|
|
65
65
|
"markdown-it-attrs": "^4.2.0",
|
|
66
66
|
"markdown-it-deflist": "2.1.0",
|
|
67
|
-
"markdown-it-meta": "0.0.1",
|
|
68
67
|
"markdown-it-sup": "1.0.0",
|
|
69
68
|
"markdownlint": "^0.32.1",
|
|
70
69
|
"markdownlint-rule-helpers": "0.17.2",
|
|
@@ -1,6 +1,70 @@
|
|
|
1
1
|
import type {MarkdownItPluginCb} from './typings';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
import meta from 'markdown-it-meta';
|
|
3
|
+
import {load} from 'js-yaml';
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
|
|
7
|
+
const SEP = '---';
|
|
8
|
+
|
|
9
|
+
const meta: MarkdownItPluginCb = (md) => {
|
|
10
|
+
const mdAny = md as any;
|
|
11
|
+
mdAny.meta = mdAny.meta || {};
|
|
12
|
+
|
|
13
|
+
const getLine = (state: any, line: number) =>
|
|
14
|
+
state.src.slice(state.bMarks[line], state.eMarks[line]);
|
|
15
|
+
|
|
16
|
+
md.block.ruler.before(
|
|
17
|
+
'code',
|
|
18
|
+
'meta',
|
|
19
|
+
(state, startLine, endLine) => {
|
|
20
|
+
if (startLine !== 0 || state.blkIndent !== 0) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (state.tShift[startLine] < 0) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
if (getLine(state, startLine).trim() !== SEP) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let line = startLine + 1;
|
|
31
|
+
const lines: string[] = [];
|
|
32
|
+
let found = false;
|
|
33
|
+
|
|
34
|
+
while (line < endLine) {
|
|
35
|
+
const str = getLine(state, line);
|
|
36
|
+
if (str.trim() === SEP) {
|
|
37
|
+
found = true;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
if (state.tShift[line] < 0) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
lines.push(str);
|
|
44
|
+
line++;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!found) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
let data: unknown;
|
|
52
|
+
try {
|
|
53
|
+
data = load(lines.join('\n')) || {};
|
|
54
|
+
} catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (typeof data !== 'object' || data === null || Array.isArray(data)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
mdAny.meta = data as Record<string, unknown>;
|
|
63
|
+
state.line = line + 1;
|
|
64
|
+
return true;
|
|
65
|
+
},
|
|
66
|
+
{alt: []},
|
|
67
|
+
);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export = meta;
|