@diplodoc/transform 4.13.1 → 4.14.1
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/print.css.map +1 -1
- package/dist/css/yfm.css.map +1 -1
- package/dist/css/yfm.min.css.map +1 -1
- package/lib/headings.d.ts +1 -1
- package/lib/headings.js +8 -6
- package/lib/headings.js.map +1 -1
- package/lib/md.js +3 -1
- package/lib/md.js.map +1 -1
- package/lib/plugins/anchors/index.d.ts +1 -0
- package/lib/plugins/anchors/index.js +7 -5
- package/lib/plugins/anchors/index.js.map +1 -1
- package/lib/plugins/block-anchor/block-anchor.js +16 -8
- package/lib/plugins/block-anchor/block-anchor.js.map +1 -1
- package/lib/plugins/links/collect.js +1 -2
- package/lib/plugins/links/collect.js.map +1 -1
- package/lib/plugins/links/index.js +4 -10
- package/lib/plugins/links/index.js.map +1 -1
- package/lib/plugins/typings.d.ts +1 -0
- package/lib/typings.d.ts +3 -1
- package/lib/utils.d.ts +8 -0
- package/lib/utils.js +22 -1
- package/lib/utils.js.map +1 -1
- package/package.json +2 -3
- package/src/transform/headings.ts +9 -6
- package/src/transform/md.ts +4 -1
- package/src/transform/plugins/anchors/index.ts +18 -9
- package/src/transform/plugins/block-anchor/block-anchor.ts +19 -8
- package/src/transform/plugins/links/collect.ts +1 -2
- package/src/transform/plugins/links/index.ts +12 -14
- package/src/transform/plugins/typings.ts +1 -0
- package/src/transform/typings.ts +3 -1
- package/src/transform/utils.ts +35 -0
- package/lib/plugins/links/constants.d.ts +0 -1
- package/lib/plugins/links/constants.js +0 -5
- package/lib/plugins/links/constants.js.map +0 -1
- package/src/transform/plugins/links/constants.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/anchors/index.ts"],"names":[],"mappings":";;;;AAAA,iCAA2B;AAC3B,oEAA2C;AAE3C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/anchors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.renderTokens = exports.replaceTokens = exports.TOKEN_NAME = void 0;
|
|
4
4
|
const pattern = /^{%[^\S\r\n]*anchor[^\S\r\n]+([\w-]+)[^\S\r\n]*%}/;
|
|
5
5
|
exports.TOKEN_NAME = 'anchor';
|
|
6
|
-
function
|
|
7
|
-
var _a, _b, _c;
|
|
6
|
+
function isParagraph(tokens, i) {
|
|
8
7
|
return (tokens[i].type === 'paragraph_open' &&
|
|
9
8
|
tokens[i + 1].type === 'inline' &&
|
|
10
|
-
tokens[i + 2].type === 'paragraph_close'
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
tokens[i + 2].type === 'paragraph_close');
|
|
10
|
+
}
|
|
11
|
+
function hasSingleChildWithText(tokens, i) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
return ((_a = tokens[i + 1].children) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_b = tokens[i + 1].children) === null || _b === void 0 ? void 0 : _b[0].type) === 'text';
|
|
14
|
+
}
|
|
15
|
+
function matchOpenToken(tokens, i) {
|
|
16
|
+
var _a;
|
|
17
|
+
return (isParagraph(tokens, i) &&
|
|
18
|
+
hasSingleChildWithText(tokens, i) &&
|
|
19
|
+
pattern.exec((_a = tokens[i + 1].children) === null || _a === void 0 ? void 0 : _a[0].content));
|
|
14
20
|
}
|
|
15
21
|
function createAnchorToken(state, anchorId, position) {
|
|
16
22
|
const token = new state.Token(exports.TOKEN_NAME, '', 0);
|
|
@@ -21,7 +27,7 @@ function createAnchorToken(state, anchorId, position) {
|
|
|
21
27
|
}
|
|
22
28
|
function replaceTokens(state) {
|
|
23
29
|
const blockTokens = state.tokens;
|
|
24
|
-
//
|
|
30
|
+
// I hate the idea of splicing the array while we're iterating over it
|
|
25
31
|
// so first lets find all the places where we will need to splice it and then actually do the splicing
|
|
26
32
|
const splicePointsMap = new Map();
|
|
27
33
|
for (let i = 0; i < blockTokens.length; i++) {
|
|
@@ -31,7 +37,9 @@ function replaceTokens(state) {
|
|
|
31
37
|
}
|
|
32
38
|
splicePointsMap.set(i, match[1]);
|
|
33
39
|
}
|
|
34
|
-
|
|
40
|
+
Array.from(splicePointsMap)
|
|
41
|
+
.sort(([keyA], [keyB]) => keyB - keyA)
|
|
42
|
+
.forEach(([position, anchorId]) => {
|
|
35
43
|
blockTokens.splice(position, 3, createAnchorToken(state, anchorId, position));
|
|
36
44
|
});
|
|
37
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-anchor.js","sourceRoot":"","sources":["../../../src/transform/plugins/block-anchor/block-anchor.ts"],"names":[],"mappings":";;;AAGA,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACvD,QAAA,UAAU,GAAG,QAAQ,CAAC;AAEnC,SAAS,
|
|
1
|
+
{"version":3,"file":"block-anchor.js","sourceRoot":"","sources":["../../../src/transform/plugins/block-anchor/block-anchor.ts"],"names":[],"mappings":";;;AAGA,MAAM,OAAO,GAAG,mDAAmD,CAAC;AACvD,QAAA,UAAU,GAAG,QAAQ,CAAC;AAEnC,SAAS,WAAW,CAAC,MAAe,EAAE,CAAS;IAC3C,OAAO,CACH,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB;QACnC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC/B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAC3C,CAAC;AACN,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,CAAS;;IACtD,OAAO,CAAA,MAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,0CAAE,MAAM,MAAK,CAAC,IAAI,CAAA,MAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,0CAAG,CAAC,EAAE,IAAI,MAAK,MAAM,CAAC;AAC/F,CAAC;AAED,SAAS,cAAc,CAAC,MAAe,EAAE,CAAS;;IAC9C,OAAO,CACH,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACtB,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,MAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,0CAAG,CAAC,EAAE,OAAiB,CAAC,CAC9D,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB,EAAE,QAAgB,EAAE,QAAgB;IAC3E,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;IACvC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;IACzB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,KAAgB;IAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,sEAAsE;IACtE,sGAAsG;IACtG,MAAM,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,KAAK,EAAE;YACR,SAAS;SACZ;QAED,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC;IACD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;SACtB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;SACrC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC9B,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACX,CAAC;AAnBD,sCAmBC;AAED,SAAgB,YAAY,CAAC,MAAe,EAAE,GAAW;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IACzB,OAAO,UAAU,EAAE,4BAA4B,CAAC;AACpD,CAAC;AAJD,oCAIC"}
|
|
@@ -8,7 +8,6 @@ const url_1 = __importDefault(require("url"));
|
|
|
8
8
|
const utils_1 = require("../../utils");
|
|
9
9
|
const utilsFS_1 = require("../../utilsFS");
|
|
10
10
|
const index_1 = __importDefault(require("./index"));
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
11
|
const replaceLinkHref = (input, href, newHref) => {
|
|
13
12
|
/* Try not replace include syntax */
|
|
14
13
|
return input.replace(`](${href})`, `](${newHref})`);
|
|
@@ -47,7 +46,7 @@ const collect = (input, options) => {
|
|
|
47
46
|
}
|
|
48
47
|
const { pathname, hash } = url_1.default.parse(href);
|
|
49
48
|
if (pathname) {
|
|
50
|
-
const isPageFile =
|
|
49
|
+
const isPageFile = utils_1.PAGE_LINK_REGEXP.test(pathname);
|
|
51
50
|
if (isPageFile) {
|
|
52
51
|
const newHref = (0, utilsFS_1.getSinglePageAnchorId)({
|
|
53
52
|
root,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/collect.ts"],"names":[],"mappings":";;;;AAAA,8DAAqC;AACrC,+BAAyB;AACzB,8CAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/collect.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,13 +29,7 @@ const url_1 = __importDefault(require("url"));
|
|
|
29
29
|
const chalk_1 = require("chalk");
|
|
30
30
|
const utils_1 = require("../../utils");
|
|
31
31
|
const utilsFS_1 = require("../../utilsFS");
|
|
32
|
-
const constants_1 = require("./constants");
|
|
33
32
|
const path_1 = __importStar(require("path"));
|
|
34
|
-
function defaultTransformLink(href) {
|
|
35
|
-
var _a;
|
|
36
|
-
const parsed = url_1.default.parse(href);
|
|
37
|
-
return url_1.default.format(Object.assign(Object.assign({}, parsed), { pathname: (_a = parsed.pathname) === null || _a === void 0 ? void 0 : _a.replace(constants_1.PAGE_LINK_REGEXP, '.html') }));
|
|
38
|
-
}
|
|
39
33
|
function getTitleFromTokens(tokens) {
|
|
40
34
|
let title = '';
|
|
41
35
|
let i = 0;
|
|
@@ -93,7 +87,7 @@ function processLink(state, tokens, idx, opts) {
|
|
|
93
87
|
if (pathname) {
|
|
94
88
|
file = (0, path_1.resolve)(path_1.default.parse(currentPath).dir, pathname);
|
|
95
89
|
fileExists = (0, utilsFS_1.isFileExists)(file);
|
|
96
|
-
isPageFile =
|
|
90
|
+
isPageFile = utils_1.PAGE_LINK_REGEXP.test(pathname);
|
|
97
91
|
if (isPageFile && !fileExists) {
|
|
98
92
|
let needShowError = true;
|
|
99
93
|
if (needSkipLinkFn) {
|
|
@@ -136,12 +130,12 @@ function processLink(state, tokens, idx, opts) {
|
|
|
136
130
|
});
|
|
137
131
|
}
|
|
138
132
|
let newPathname = '';
|
|
139
|
-
if (!(0, path_1.isAbsolute)(href)
|
|
140
|
-
newPathname = (0,
|
|
133
|
+
if (!(0, path_1.isAbsolute)(href)) {
|
|
134
|
+
newPathname = (0, utils_1.getPublicPath)(opts, file);
|
|
141
135
|
href = url_1.default.format(Object.assign(Object.assign({}, url_1.default.parse(href)), { pathname: newPathname }));
|
|
142
136
|
}
|
|
143
137
|
if (pathname || newPathname) {
|
|
144
|
-
const transformer = transformLink || defaultTransformLink;
|
|
138
|
+
const transformer = transformLink || utils_1.defaultTransformLink;
|
|
145
139
|
linkToken.attrSet('href', transformer(href));
|
|
146
140
|
}
|
|
147
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,iCAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/index.ts"],"names":[],"mappings":"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"}
|
package/lib/plugins/typings.d.ts
CHANGED
package/lib/typings.d.ts
CHANGED
|
@@ -38,8 +38,10 @@ export interface OptionsType {
|
|
|
38
38
|
needFlatListHeadings?: boolean;
|
|
39
39
|
plugins?: MarkdownItPluginCb<any>[];
|
|
40
40
|
highlightLangs?: HighlightLangMap;
|
|
41
|
-
root?: string;
|
|
42
41
|
extractChangelogs?: boolean;
|
|
42
|
+
root?: string;
|
|
43
|
+
rootPublicPath?: string;
|
|
44
|
+
transformLink?: (href: string) => string;
|
|
43
45
|
[x: string]: unknown;
|
|
44
46
|
}
|
|
45
47
|
export interface OutputType {
|
package/lib/utils.d.ts
CHANGED
|
@@ -11,3 +11,11 @@ export declare function transformLinkToOriginalArticle(opts: {
|
|
|
11
11
|
currentPath: string;
|
|
12
12
|
}): string;
|
|
13
13
|
export declare function getHrefTokenAttr(token: Token): string;
|
|
14
|
+
export declare const PAGE_LINK_REGEXP: RegExp;
|
|
15
|
+
export declare function defaultTransformLink(href: string): string;
|
|
16
|
+
export declare function getPublicPath({ path, root, rootPublicPath, transformLink, }: {
|
|
17
|
+
path?: string;
|
|
18
|
+
root?: string;
|
|
19
|
+
rootPublicPath?: string;
|
|
20
|
+
transformLink?: (href: string) => string;
|
|
21
|
+
}, input?: string | null): string;
|
package/lib/utils.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getHrefTokenAttr = exports.transformLinkToOriginalArticle = exports.isExternalHref = exports.headingInfo = exports.findBlockTokens = exports.isLocalUrl = void 0;
|
|
6
|
+
exports.getPublicPath = exports.defaultTransformLink = exports.PAGE_LINK_REGEXP = exports.getHrefTokenAttr = exports.transformLinkToOriginalArticle = exports.isExternalHref = exports.headingInfo = exports.findBlockTokens = exports.isLocalUrl = void 0;
|
|
7
|
+
const url_1 = __importDefault(require("url"));
|
|
8
|
+
const path_1 = require("path");
|
|
4
9
|
function isLocalUrl(url) {
|
|
5
10
|
return !/^(?:[a-z]+:)?\/\//i.test(url);
|
|
6
11
|
}
|
|
@@ -76,4 +81,20 @@ function getHrefTokenAttr(token) {
|
|
|
76
81
|
return href;
|
|
77
82
|
}
|
|
78
83
|
exports.getHrefTokenAttr = getHrefTokenAttr;
|
|
84
|
+
exports.PAGE_LINK_REGEXP = /\.(md|ya?ml)$/i;
|
|
85
|
+
function defaultTransformLink(href) {
|
|
86
|
+
var _a;
|
|
87
|
+
const parsed = url_1.default.parse(href);
|
|
88
|
+
href = url_1.default.format(Object.assign(Object.assign({}, parsed), { pathname: (_a = parsed.pathname) === null || _a === void 0 ? void 0 : _a.replace(exports.PAGE_LINK_REGEXP, '.html') }));
|
|
89
|
+
return href;
|
|
90
|
+
}
|
|
91
|
+
exports.defaultTransformLink = defaultTransformLink;
|
|
92
|
+
function getPublicPath({ path, root, rootPublicPath, transformLink, }, input) {
|
|
93
|
+
const currentPath = input || path || '';
|
|
94
|
+
const filePath = (0, path_1.relative)((0, path_1.resolve)(root || '', rootPublicPath || ''), currentPath);
|
|
95
|
+
const transformer = transformLink || defaultTransformLink;
|
|
96
|
+
const href = transformer(filePath);
|
|
97
|
+
return href;
|
|
98
|
+
}
|
|
99
|
+
exports.getPublicPath = getPublicPath;
|
|
79
100
|
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/transform/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/transform/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diplodoc/transform",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.14.1",
|
|
4
4
|
"description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"markdown",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"markdown-it-deflist": "2.1.0",
|
|
55
55
|
"markdown-it-meta": "0.0.1",
|
|
56
56
|
"markdown-it-sup": "1.0.0",
|
|
57
|
-
"markdownlint": "^0.
|
|
57
|
+
"markdownlint": "^0.32.1",
|
|
58
58
|
"markdownlint-rule-helpers": "0.17.2",
|
|
59
59
|
"sanitize-html": "^2.11.0",
|
|
60
60
|
"slugify": "1.6.5",
|
|
@@ -72,7 +72,6 @@
|
|
|
72
72
|
"@types/lodash": "4.14.183",
|
|
73
73
|
"@types/markdown-it": "12.2.3",
|
|
74
74
|
"@types/markdown-it-attrs": "4.1.0",
|
|
75
|
-
"@types/markdownlint": "0.18.0",
|
|
76
75
|
"@types/node": "17.0.10",
|
|
77
76
|
"@types/sanitize-html": "^2.9.3",
|
|
78
77
|
"autoprefixer": "^10.4.15",
|
|
@@ -17,11 +17,13 @@ function getHref(token: Token) {
|
|
|
17
17
|
return '#' + (token.attrGet('id') || '');
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export = function getHeadings(tokens: Token[], needFlatListHeadings?: boolean) {
|
|
21
|
-
return needFlatListHeadings
|
|
20
|
+
export = function getHeadings(tokens: Token[], needFlatListHeadings?: boolean, href = '') {
|
|
21
|
+
return needFlatListHeadings
|
|
22
|
+
? getFlatListHeadings(tokens, href)
|
|
23
|
+
: getFilteredHeadings(tokens, href);
|
|
22
24
|
};
|
|
23
25
|
|
|
24
|
-
function getFilteredHeadings(tokens: Token[]) {
|
|
26
|
+
function getFilteredHeadings(tokens: Token[], href: string) {
|
|
25
27
|
const headings: Heading[] = [];
|
|
26
28
|
let parents = [headings];
|
|
27
29
|
let prevLevel;
|
|
@@ -33,7 +35,7 @@ function getFilteredHeadings(tokens: Token[]) {
|
|
|
33
35
|
if (isHeading && level >= 2) {
|
|
34
36
|
const entry = {
|
|
35
37
|
title: getTitle(tokens[i + 1]),
|
|
36
|
-
href: getHref(tokens[i]),
|
|
38
|
+
href: href + getHref(tokens[i]),
|
|
37
39
|
level,
|
|
38
40
|
};
|
|
39
41
|
let closestParent = parents[parents.length - 1];
|
|
@@ -66,7 +68,8 @@ function getFilteredHeadings(tokens: Token[]) {
|
|
|
66
68
|
|
|
67
69
|
return headings;
|
|
68
70
|
}
|
|
69
|
-
|
|
71
|
+
|
|
72
|
+
function getFlatListHeadings(tokens: Token[], href: string) {
|
|
70
73
|
const headings: Heading[] = [];
|
|
71
74
|
|
|
72
75
|
for (let i = 0; i < tokens.length; i++) {
|
|
@@ -79,7 +82,7 @@ function getFlatListHeadings(tokens: Token[]) {
|
|
|
79
82
|
|
|
80
83
|
headings.push({
|
|
81
84
|
title: getTitle(tokens[i + 1]),
|
|
82
|
-
href: getHref(tokens[i]),
|
|
85
|
+
href: href + getHref(tokens[i]),
|
|
83
86
|
level,
|
|
84
87
|
});
|
|
85
88
|
}
|
package/src/transform/md.ts
CHANGED
|
@@ -9,6 +9,7 @@ import attrs from 'markdown-it-attrs';
|
|
|
9
9
|
import extractTitle from './title';
|
|
10
10
|
import getHeadings from './headings';
|
|
11
11
|
import sanitizeHtml from './sanitize';
|
|
12
|
+
import {getPublicPath} from './utils';
|
|
12
13
|
|
|
13
14
|
function initMarkdownit(options: OptionsType) {
|
|
14
15
|
const {allowHTML = false, linkify = false, breaks = true, highlightLangs = {}} = options;
|
|
@@ -85,6 +86,8 @@ function initParser(md: MarkdownIt, options: OptionsType, env: EnvType) {
|
|
|
85
86
|
return (input: string) => {
|
|
86
87
|
const {extractTitle: extractTitleOption, needTitle, needFlatListHeadings = false} = options;
|
|
87
88
|
|
|
89
|
+
const href = getPublicPath(options);
|
|
90
|
+
|
|
88
91
|
let tokens = md.parse(input, env);
|
|
89
92
|
|
|
90
93
|
if (extractTitleOption) {
|
|
@@ -104,7 +107,7 @@ function initParser(md: MarkdownIt, options: OptionsType, env: EnvType) {
|
|
|
104
107
|
env.title = extractTitle(tokens).title;
|
|
105
108
|
}
|
|
106
109
|
|
|
107
|
-
env.headings = getHeadings(tokens, needFlatListHeadings);
|
|
110
|
+
env.headings = getHeadings(tokens, needFlatListHeadings, href);
|
|
108
111
|
|
|
109
112
|
return tokens;
|
|
110
113
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {bold} from 'chalk';
|
|
2
2
|
import GithubSlugger from 'github-slugger';
|
|
3
3
|
|
|
4
|
-
import {headingInfo} from '../../utils';
|
|
4
|
+
import {getPublicPath, headingInfo} from '../../utils';
|
|
5
5
|
import {CUSTOM_ID_EXCEPTION, CUSTOM_ID_REGEXP} from './constants';
|
|
6
6
|
import StateCore from 'markdown-it/lib/rules_core/state_core';
|
|
7
7
|
import Token from 'markdown-it/lib/token';
|
|
@@ -10,14 +10,20 @@ import {MarkdownItPluginCb} from '../typings';
|
|
|
10
10
|
|
|
11
11
|
const slugify: (str: string, opts: {}) => string = require('slugify');
|
|
12
12
|
|
|
13
|
-
function createLinkTokens(
|
|
13
|
+
function createLinkTokens(
|
|
14
|
+
state: StateCore,
|
|
15
|
+
id: string,
|
|
16
|
+
title: string,
|
|
17
|
+
setId = false,
|
|
18
|
+
href: string,
|
|
19
|
+
) {
|
|
14
20
|
const open = new state.Token('link_open', 'a', 1);
|
|
15
21
|
const close = new state.Token('link_close', 'a', -1);
|
|
16
22
|
|
|
17
23
|
if (setId) {
|
|
18
24
|
open.attrSet('id', id);
|
|
19
25
|
}
|
|
20
|
-
open.attrSet('href', '#' + id);
|
|
26
|
+
open.attrSet('href', href + '#' + id);
|
|
21
27
|
open.attrSet('class', 'yfm-anchor');
|
|
22
28
|
open.attrSet('aria-hidden', 'true');
|
|
23
29
|
|
|
@@ -58,6 +64,7 @@ const removeCustomId = (content: string) => {
|
|
|
58
64
|
|
|
59
65
|
return content;
|
|
60
66
|
};
|
|
67
|
+
|
|
61
68
|
const removeCustomIds = (token: Token) => {
|
|
62
69
|
token.content = removeCustomId(token.content);
|
|
63
70
|
token.children?.forEach((child) => {
|
|
@@ -68,18 +75,20 @@ const removeCustomIds = (token: Token) => {
|
|
|
68
75
|
interface Options {
|
|
69
76
|
extractTitle?: boolean;
|
|
70
77
|
supportGithubAnchors?: boolean;
|
|
78
|
+
transformLink: (v: string) => string;
|
|
71
79
|
}
|
|
72
80
|
|
|
73
|
-
const index: MarkdownItPluginCb<Options> = (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
) => {
|
|
81
|
+
const index: MarkdownItPluginCb<Options> = (md, options) => {
|
|
82
|
+
const {extractTitle, path, log, supportGithubAnchors} = options;
|
|
83
|
+
|
|
77
84
|
const plugin = (state: StateCore) => {
|
|
78
85
|
/* Do not use the plugin if it is included in the file */
|
|
79
86
|
if (state.env.includes && state.env.includes.length) {
|
|
80
87
|
return;
|
|
81
88
|
}
|
|
82
89
|
|
|
90
|
+
const href = getPublicPath(options, state.env.path);
|
|
91
|
+
|
|
83
92
|
const ids: Record<string, number> = {};
|
|
84
93
|
const tokens = state.tokens;
|
|
85
94
|
let i = 0;
|
|
@@ -132,12 +141,12 @@ const index: MarkdownItPluginCb<Options> = (
|
|
|
132
141
|
const anchorTitle = removeCustomId(title).replace(/`/g, '');
|
|
133
142
|
allAnchorIds.forEach((customId) => {
|
|
134
143
|
const setId = id !== customId;
|
|
135
|
-
const linkTokens = createLinkTokens(state, customId, anchorTitle, setId);
|
|
144
|
+
const linkTokens = createLinkTokens(state, customId, anchorTitle, setId, href);
|
|
136
145
|
|
|
137
146
|
inlineToken.children?.unshift(...linkTokens);
|
|
138
147
|
|
|
139
148
|
if (supportGithubAnchors) {
|
|
140
|
-
const ghLinkTokens = createLinkTokens(state, ghId, anchorTitle, true);
|
|
149
|
+
const ghLinkTokens = createLinkTokens(state, ghId, anchorTitle, true, href);
|
|
141
150
|
inlineToken.children?.unshift(...ghLinkTokens);
|
|
142
151
|
}
|
|
143
152
|
});
|
|
@@ -4,13 +4,22 @@ import Token from 'markdown-it/lib/token';
|
|
|
4
4
|
const pattern = /^{%[^\S\r\n]*anchor[^\S\r\n]+([\w-]+)[^\S\r\n]*%}/;
|
|
5
5
|
export const TOKEN_NAME = 'anchor';
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function isParagraph(tokens: Token[], i: number) {
|
|
8
8
|
return (
|
|
9
9
|
tokens[i].type === 'paragraph_open' &&
|
|
10
10
|
tokens[i + 1].type === 'inline' &&
|
|
11
|
-
tokens[i + 2].type === 'paragraph_close'
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
tokens[i + 2].type === 'paragraph_close'
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function hasSingleChildWithText(tokens: Token[], i: number) {
|
|
16
|
+
return tokens[i + 1].children?.length === 1 && tokens[i + 1].children?.[0].type === 'text';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function matchOpenToken(tokens: Token[], i: number) {
|
|
20
|
+
return (
|
|
21
|
+
isParagraph(tokens, i) &&
|
|
22
|
+
hasSingleChildWithText(tokens, i) &&
|
|
14
23
|
pattern.exec(tokens[i + 1].children?.[0].content as string)
|
|
15
24
|
);
|
|
16
25
|
}
|
|
@@ -25,7 +34,7 @@ function createAnchorToken(state: StateCore, anchorId: string, position: number)
|
|
|
25
34
|
|
|
26
35
|
export function replaceTokens(state: StateCore) {
|
|
27
36
|
const blockTokens = state.tokens;
|
|
28
|
-
//
|
|
37
|
+
// I hate the idea of splicing the array while we're iterating over it
|
|
29
38
|
// so first lets find all the places where we will need to splice it and then actually do the splicing
|
|
30
39
|
const splicePointsMap: Map<number, string> = new Map();
|
|
31
40
|
for (let i = 0; i < blockTokens.length; i++) {
|
|
@@ -37,9 +46,11 @@ export function replaceTokens(state: StateCore) {
|
|
|
37
46
|
|
|
38
47
|
splicePointsMap.set(i, match[1]);
|
|
39
48
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
Array.from(splicePointsMap)
|
|
50
|
+
.sort(([keyA], [keyB]) => keyB - keyA)
|
|
51
|
+
.forEach(([position, anchorId]) => {
|
|
52
|
+
blockTokens.splice(position, 3, createAnchorToken(state, anchorId, position));
|
|
53
|
+
});
|
|
43
54
|
}
|
|
44
55
|
|
|
45
56
|
export function renderTokens(tokens: Token[], idx: number) {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import MarkdownIt from 'markdown-it';
|
|
2
2
|
import {sep} from 'path';
|
|
3
3
|
import url from 'url';
|
|
4
|
-
import {getHrefTokenAttr, isLocalUrl} from '../../utils';
|
|
4
|
+
import {PAGE_LINK_REGEXP, getHrefTokenAttr, isLocalUrl} from '../../utils';
|
|
5
5
|
import {getSinglePageAnchorId, resolveRelativePath} from '../../utilsFS';
|
|
6
6
|
import index from './index';
|
|
7
|
-
import {PAGE_LINK_REGEXP} from './constants';
|
|
8
7
|
|
|
9
8
|
const replaceLinkHref = (input: string, href: string, newHref: string) => {
|
|
10
9
|
/* Try not replace include syntax */
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import url from 'url';
|
|
2
2
|
import {bold} from 'chalk';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
PAGE_LINK_REGEXP,
|
|
5
|
+
defaultTransformLink,
|
|
6
|
+
findBlockTokens,
|
|
7
|
+
getHrefTokenAttr,
|
|
8
|
+
getPublicPath,
|
|
9
|
+
headingInfo,
|
|
10
|
+
isLocalUrl,
|
|
11
|
+
} from '../../utils';
|
|
4
12
|
import {getFileTokens, isFileExists} from '../../utilsFS';
|
|
5
|
-
import {PAGE_LINK_REGEXP} from './constants';
|
|
6
13
|
import Token from 'markdown-it/lib/token';
|
|
7
14
|
import {Logger} from 'src/transform/log';
|
|
8
15
|
import {MarkdownItPluginCb, MarkdownItPluginOpts} from '../typings';
|
|
9
|
-
import path, {isAbsolute,
|
|
16
|
+
import path, {isAbsolute, resolve} from 'path';
|
|
10
17
|
import {StateCore} from 'src/transform/typings';
|
|
11
18
|
|
|
12
|
-
function defaultTransformLink(href: string) {
|
|
13
|
-
const parsed = url.parse(href);
|
|
14
|
-
|
|
15
|
-
return url.format({
|
|
16
|
-
...parsed,
|
|
17
|
-
pathname: parsed.pathname?.replace(PAGE_LINK_REGEXP, '.html'),
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
|
|
21
19
|
function getTitleFromTokens(tokens: Token[]) {
|
|
22
20
|
let title = '';
|
|
23
21
|
|
|
@@ -164,8 +162,8 @@ function processLink(state: StateCore, tokens: Token[], idx: number, opts: ProcO
|
|
|
164
162
|
}
|
|
165
163
|
|
|
166
164
|
let newPathname = '';
|
|
167
|
-
if (!isAbsolute(href)
|
|
168
|
-
newPathname =
|
|
165
|
+
if (!isAbsolute(href)) {
|
|
166
|
+
newPathname = getPublicPath(opts, file);
|
|
169
167
|
|
|
170
168
|
href = url.format({
|
|
171
169
|
...url.parse(href),
|
package/src/transform/typings.ts
CHANGED
|
@@ -43,8 +43,10 @@ export interface OptionsType {
|
|
|
43
43
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
44
|
plugins?: MarkdownItPluginCb<any>[];
|
|
45
45
|
highlightLangs?: HighlightLangMap;
|
|
46
|
-
root?: string;
|
|
47
46
|
extractChangelogs?: boolean;
|
|
47
|
+
root?: string;
|
|
48
|
+
rootPublicPath?: string;
|
|
49
|
+
transformLink?: (href: string) => string;
|
|
48
50
|
[x: string]: unknown;
|
|
49
51
|
}
|
|
50
52
|
|
package/src/transform/utils.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import url from 'url';
|
|
2
|
+
import {relative, resolve} from 'path';
|
|
1
3
|
import Token from 'markdown-it/lib/token';
|
|
2
4
|
|
|
3
5
|
export function isLocalUrl(url: string) {
|
|
@@ -89,3 +91,36 @@ export function getHrefTokenAttr(token: Token) {
|
|
|
89
91
|
|
|
90
92
|
return href;
|
|
91
93
|
}
|
|
94
|
+
|
|
95
|
+
export const PAGE_LINK_REGEXP = /\.(md|ya?ml)$/i;
|
|
96
|
+
|
|
97
|
+
export function defaultTransformLink(href: string) {
|
|
98
|
+
const parsed = url.parse(href);
|
|
99
|
+
href = url.format({
|
|
100
|
+
...parsed,
|
|
101
|
+
pathname: parsed.pathname?.replace(PAGE_LINK_REGEXP, '.html'),
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return href;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function getPublicPath(
|
|
108
|
+
{
|
|
109
|
+
path,
|
|
110
|
+
root,
|
|
111
|
+
rootPublicPath,
|
|
112
|
+
transformLink,
|
|
113
|
+
}: {
|
|
114
|
+
path?: string;
|
|
115
|
+
root?: string;
|
|
116
|
+
rootPublicPath?: string;
|
|
117
|
+
transformLink?: (href: string) => string;
|
|
118
|
+
},
|
|
119
|
+
input?: string | null,
|
|
120
|
+
) {
|
|
121
|
+
const currentPath = input || path || '';
|
|
122
|
+
const filePath = relative(resolve(root || '', rootPublicPath || ''), currentPath);
|
|
123
|
+
const transformer = transformLink || defaultTransformLink;
|
|
124
|
+
const href = transformer(filePath);
|
|
125
|
+
return href;
|
|
126
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const PAGE_LINK_REGEXP: RegExp;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/transform/plugins/links/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const PAGE_LINK_REGEXP = /\.(md|ya?ml)$/i;
|