@diplodoc/transform 4.69.2 → 4.70.0
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.map +1 -1
- package/dist/css/yfm.min.css.map +1 -1
- package/lib/plugins/anchors/constants.d.ts +1 -2
- package/lib/plugins/anchors/constants.js +3 -2
- package/lib/plugins/anchors/constants.js.map +1 -1
- package/lib/plugins/anchors/custom-id.d.ts +6 -0
- package/lib/plugins/anchors/custom-id.js +42 -0
- package/lib/plugins/anchors/custom-id.js.map +1 -0
- package/lib/plugins/anchors/index.js +9 -38
- package/lib/plugins/anchors/index.js.map +1 -1
- package/lib/plugins/code.js +3 -1
- package/lib/plugins/code.js.map +1 -1
- package/lib/plugins/term/index.js +7 -8
- package/lib/plugins/term/index.js.map +1 -1
- package/lib/plugins/term/termDefinitions.js +34 -4
- package/lib/plugins/term/termDefinitions.js.map +1 -1
- package/package.json +1 -1
- package/src/transform/plugins/anchors/constants.ts +1 -2
- package/src/transform/plugins/anchors/custom-id.ts +45 -0
- package/src/transform/plugins/anchors/index.ts +4 -40
- package/src/transform/plugins/code.ts +3 -1
- package/src/transform/plugins/term/index.ts +8 -10
- package/src/transform/plugins/term/termDefinitions.ts +38 -4
package/lib/plugins/code.js
CHANGED
|
@@ -96,7 +96,9 @@ const code = (md, opts) => {
|
|
|
96
96
|
if (codeMatch) {
|
|
97
97
|
const codeContent = codeMatch[1];
|
|
98
98
|
const codeWithLineNumbers = addLineNumbers(codeContent, { lineWrapping });
|
|
99
|
-
|
|
99
|
+
// Escape $ in replacement string: $$ becomes a literal $ in String.replace()
|
|
100
|
+
const escapedReplacement = codeWithLineNumbers.replace(/\$/g, '$$$$');
|
|
101
|
+
superCode = superCode.replace(codeContent, escapedReplacement);
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
const superCodeWithTerms = superCode && (env === null || env === void 0 ? void 0 : env.terms) ? termReplace(superCode, env, md.utils.escapeRE) : superCode;
|
package/lib/plugins/code.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/transform/plugins/code.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/transform/plugins/code.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,15 +77,14 @@ function termInlineRule(state, silent) {
|
|
|
77
77
|
if (!match || !state.env.terms[':' + match.termId]) {
|
|
78
78
|
return false;
|
|
79
79
|
}
|
|
80
|
-
if (silent) {
|
|
81
|
-
|
|
80
|
+
if (!silent) {
|
|
81
|
+
const labelContent = state.src.slice(state.pos + 1, match.labelEnd).replace(/\\(.)/g, '$1');
|
|
82
|
+
const termOpen = state.push('term_open', 'i', 1);
|
|
83
|
+
setTermAttrs(termOpen, match.termId);
|
|
84
|
+
const textToken = state.push('text', '', 0);
|
|
85
|
+
textToken.content = labelContent;
|
|
86
|
+
state.push('term_close', 'i', -1);
|
|
82
87
|
}
|
|
83
|
-
const labelContent = state.src.slice(state.pos + 1, match.labelEnd).replace(/\\(.)/g, '$1');
|
|
84
|
-
const termOpen = state.push('term_open', 'i', 1);
|
|
85
|
-
setTermAttrs(termOpen, match.termId);
|
|
86
|
-
const textToken = state.push('text', '', 0);
|
|
87
|
-
textToken.content = labelContent;
|
|
88
|
-
state.push('term_close', 'i', -1);
|
|
89
88
|
state.pos = match.endPos;
|
|
90
89
|
return true;
|
|
91
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/term/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/term/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.termDefinitions = termDefinitions;
|
|
4
4
|
const constants_1 = require("./constants");
|
|
5
|
+
const INCLUDE_LINE_RE = /^{%\s*include\s/;
|
|
6
|
+
const NEW_LINE_RE = /^(\r\n|\r|\n)/;
|
|
7
|
+
const TERM_DEF_RE = /^\[\*(\w+)\]:/;
|
|
8
|
+
/**
|
|
9
|
+
* Checks whether the first non-blank line after {@link fromLine} is an
|
|
10
|
+
* `{% include %}` directive. Used to allow blank-line gaps between
|
|
11
|
+
* consecutive includes inside a single term definition.
|
|
12
|
+
*
|
|
13
|
+
* @param {StateBlock} state - The markdown-it state block containing parsing information
|
|
14
|
+
* @param {number} fromLine - The line number from which to start searching for include directives
|
|
15
|
+
* @param {number} endLine - The last line number to search within
|
|
16
|
+
* @returns {boolean} Returns true if an include directive is found after blank lines, false otherwise
|
|
17
|
+
*/
|
|
18
|
+
function hasIncludeAfterBlanks(state, fromLine, endLine) {
|
|
19
|
+
for (let line = fromLine + 1; line <= endLine; line++) {
|
|
20
|
+
const start = state.bMarks[line];
|
|
21
|
+
const end = state.eMarks[line];
|
|
22
|
+
if (start === end)
|
|
23
|
+
continue;
|
|
24
|
+
const content = state.src.slice(start, end);
|
|
25
|
+
return INCLUDE_LINE_RE.test(content.trimStart());
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
5
29
|
function termDefinitions(md, options) {
|
|
6
30
|
return (state, startLine, endLine, silent) => {
|
|
7
31
|
let ch;
|
|
@@ -31,19 +55,25 @@ function termDefinitions(md, options) {
|
|
|
31
55
|
pos++;
|
|
32
56
|
}
|
|
33
57
|
}
|
|
34
|
-
const newLineReg = new RegExp(/^(\r\n|\r|\n)/);
|
|
35
|
-
const termReg = new RegExp(/^\[\*(\w+)\]:/);
|
|
36
58
|
let currentLine = startLine;
|
|
37
|
-
// Allow multiline term definition
|
|
59
|
+
// Allow multiline term definition.
|
|
60
|
+
// Blank lines normally terminate the definition, but we look ahead
|
|
61
|
+
// past them: if the next non-blank line is an {% include %} directive,
|
|
62
|
+
// we keep scanning so that multiple includes can be part of one term.
|
|
38
63
|
for (; currentLine < endLine; currentLine++) {
|
|
39
64
|
const nextLineStart = state.bMarks[currentLine + 1];
|
|
40
65
|
const nextLineEnd = state.eMarks[currentLine + 1];
|
|
41
66
|
const nextLine = nextLineStart === nextLineEnd
|
|
42
67
|
? state.src[nextLineStart]
|
|
43
68
|
: state.src.slice(nextLineStart, nextLineEnd);
|
|
44
|
-
if (
|
|
69
|
+
if (TERM_DEF_RE.test(nextLine)) {
|
|
45
70
|
break;
|
|
46
71
|
}
|
|
72
|
+
if (NEW_LINE_RE.test(nextLine)) {
|
|
73
|
+
if (!hasIncludeAfterBlanks(state, currentLine + 1, endLine)) {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
47
77
|
state.line = currentLine + 1;
|
|
48
78
|
}
|
|
49
79
|
max = state.eMarks[currentLine];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"termDefinitions.js","sourceRoot":"","sources":["../../../src/transform/plugins/term/termDefinitions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"termDefinitions.js","sourceRoot":"","sources":["../../../src/transform/plugins/term/termDefinitions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type {Lang} from '../typings';
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
export const CUSTOM_ID_EXCEPTION = '[{#T}]';
|
|
3
|
+
export {CUSTOM_ID_REGEXP, CUSTOM_ID_EXCEPTION} from './custom-id';
|
|
5
4
|
|
|
6
5
|
export const ANCHOR_TITLES: Record<Lang, string> = {
|
|
7
6
|
ru: 'Скопировать ссылку',
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Utils for working with custom ids in heading tokens
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import type {Token} from 'markdown-it';
|
|
6
|
+
|
|
7
|
+
export const CUSTOM_ID_REGEXP = /\[?{ ?#(\S+) ?}]?/g;
|
|
8
|
+
export const CUSTOM_ID_EXCEPTION = '[{#T}]';
|
|
9
|
+
|
|
10
|
+
export const getCustomIds = (content: string) => {
|
|
11
|
+
const ids: string[] = [];
|
|
12
|
+
|
|
13
|
+
content.replace(CUSTOM_ID_REGEXP, (match, customId) => {
|
|
14
|
+
if (match !== CUSTOM_ID_EXCEPTION) {
|
|
15
|
+
ids.push(customId);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return '';
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return ids.length ? ids : null;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const removeCustomId = (content: string) => {
|
|
25
|
+
if (CUSTOM_ID_REGEXP.test(content)) {
|
|
26
|
+
return content
|
|
27
|
+
.replace(CUSTOM_ID_REGEXP, (match) => {
|
|
28
|
+
if (match === CUSTOM_ID_EXCEPTION) {
|
|
29
|
+
return match;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return '';
|
|
33
|
+
})
|
|
34
|
+
.trim();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return content;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const removeCustomIds = (token: Token) => {
|
|
41
|
+
token.content = removeCustomId(token.content);
|
|
42
|
+
token.children?.forEach((child) => {
|
|
43
|
+
child.content = removeCustomId(child.content);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import type StateCore from 'markdown-it/lib/rules_core/state_core';
|
|
2
|
-
import type Token from 'markdown-it/lib/token';
|
|
3
2
|
import type {MarkdownItPluginCb} from '../typings';
|
|
4
3
|
|
|
5
4
|
import {bold} from 'chalk';
|
|
6
5
|
import GithubSlugger from 'github-slugger';
|
|
7
|
-
import {escapeHtml} from 'markdown-it/lib/common/utils';
|
|
8
6
|
import slugify from 'slugify';
|
|
9
7
|
|
|
10
8
|
import {headingInfo} from '../../utils';
|
|
11
9
|
|
|
12
|
-
import {ANCHOR_TITLES
|
|
10
|
+
import {ANCHOR_TITLES} from './constants';
|
|
11
|
+
import {getCustomIds, removeCustomId, removeCustomIds} from './custom-id';
|
|
13
12
|
|
|
14
13
|
function createAnchorButtonTokens(
|
|
15
14
|
state: StateCore,
|
|
@@ -58,43 +57,6 @@ function createAnchorLinkTokens(
|
|
|
58
57
|
return [open, hiddenDesc, close];
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
const getCustomIds = (content: string) => {
|
|
62
|
-
const ids: string[] = [];
|
|
63
|
-
|
|
64
|
-
content.replace(CUSTOM_ID_REGEXP, (match, customId) => {
|
|
65
|
-
if (match !== CUSTOM_ID_EXCEPTION) {
|
|
66
|
-
ids.push(customId);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return '';
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
return ids.length ? ids : null;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const removeCustomId = (content: string) => {
|
|
76
|
-
if (CUSTOM_ID_REGEXP.test(content)) {
|
|
77
|
-
return content
|
|
78
|
-
.replace(CUSTOM_ID_REGEXP, (match) => {
|
|
79
|
-
if (match === CUSTOM_ID_EXCEPTION) {
|
|
80
|
-
return match;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return '';
|
|
84
|
-
})
|
|
85
|
-
.trim();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return content;
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
const removeCustomIds = (token: Token) => {
|
|
92
|
-
token.content = removeCustomId(token.content);
|
|
93
|
-
token.children?.forEach((child) => {
|
|
94
|
-
child.content = removeCustomId(child.content);
|
|
95
|
-
});
|
|
96
|
-
};
|
|
97
|
-
|
|
98
60
|
interface Options {
|
|
99
61
|
extractTitle?: boolean;
|
|
100
62
|
supportGithubAnchors?: boolean;
|
|
@@ -224,6 +186,8 @@ const index: MarkdownItPluginCb<Options> = (md, options) => {
|
|
|
224
186
|
}
|
|
225
187
|
}
|
|
226
188
|
|
|
189
|
+
const {escapeHtml} = md.utils;
|
|
190
|
+
|
|
227
191
|
md.renderer.rules.anchor_hidden_desc = function (tokens, index) {
|
|
228
192
|
return (
|
|
229
193
|
'<span class="visually-hidden" data-no-index="true">' +
|
|
@@ -135,7 +135,9 @@ const code: MarkdownItPluginCb<CodeOptions> = (md, opts) => {
|
|
|
135
135
|
if (codeMatch) {
|
|
136
136
|
const codeContent = codeMatch[1];
|
|
137
137
|
const codeWithLineNumbers = addLineNumbers(codeContent, {lineWrapping});
|
|
138
|
-
|
|
138
|
+
// Escape $ in replacement string: $$ becomes a literal $ in String.replace()
|
|
139
|
+
const escapedReplacement = codeWithLineNumbers.replace(/\$/g, '$$$$');
|
|
140
|
+
superCode = superCode.replace(codeContent, escapedReplacement);
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
143
|
|
|
@@ -106,19 +106,17 @@ function termInlineRule(state: StateInline, silent: boolean): boolean {
|
|
|
106
106
|
return false;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
if (silent) {
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const labelContent = state.src.slice(state.pos + 1, match.labelEnd).replace(/\\(.)/g, '$1');
|
|
109
|
+
if (!silent) {
|
|
110
|
+
const labelContent = state.src.slice(state.pos + 1, match.labelEnd).replace(/\\(.)/g, '$1');
|
|
114
111
|
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
const termOpen = state.push('term_open', 'i', 1);
|
|
113
|
+
setTermAttrs(termOpen, match.termId);
|
|
117
114
|
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
const textToken = state.push('text', '', 0);
|
|
116
|
+
textToken.content = labelContent;
|
|
120
117
|
|
|
121
|
-
|
|
118
|
+
state.push('term_close', 'i', -1);
|
|
119
|
+
}
|
|
122
120
|
|
|
123
121
|
state.pos = match.endPos;
|
|
124
122
|
return true;
|
|
@@ -4,6 +4,33 @@ import type {MarkdownItPluginOpts} from '../typings';
|
|
|
4
4
|
|
|
5
5
|
import {BASIC_TERM_REGEXP} from './constants';
|
|
6
6
|
|
|
7
|
+
const INCLUDE_LINE_RE = /^{%\s*include\s/;
|
|
8
|
+
const NEW_LINE_RE = /^(\r\n|\r|\n)/;
|
|
9
|
+
const TERM_DEF_RE = /^\[\*(\w+)\]:/;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether the first non-blank line after {@link fromLine} is an
|
|
13
|
+
* `{% include %}` directive. Used to allow blank-line gaps between
|
|
14
|
+
* consecutive includes inside a single term definition.
|
|
15
|
+
*
|
|
16
|
+
* @param {StateBlock} state - The markdown-it state block containing parsing information
|
|
17
|
+
* @param {number} fromLine - The line number from which to start searching for include directives
|
|
18
|
+
* @param {number} endLine - The last line number to search within
|
|
19
|
+
* @returns {boolean} Returns true if an include directive is found after blank lines, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
function hasIncludeAfterBlanks(state: StateBlock, fromLine: number, endLine: number): boolean {
|
|
22
|
+
for (let line = fromLine + 1; line <= endLine; line++) {
|
|
23
|
+
const start = state.bMarks[line];
|
|
24
|
+
const end = state.eMarks[line];
|
|
25
|
+
|
|
26
|
+
if (start === end) continue;
|
|
27
|
+
|
|
28
|
+
const content = state.src.slice(start, end);
|
|
29
|
+
return INCLUDE_LINE_RE.test(content.trimStart());
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
7
34
|
export function termDefinitions(md: MarkdownIt, options: MarkdownItPluginOpts) {
|
|
8
35
|
return (state: StateBlock, startLine: number, endLine: number, silent: boolean) => {
|
|
9
36
|
let ch;
|
|
@@ -36,11 +63,12 @@ export function termDefinitions(md: MarkdownIt, options: MarkdownItPluginOpts) {
|
|
|
36
63
|
}
|
|
37
64
|
}
|
|
38
65
|
|
|
39
|
-
const newLineReg = new RegExp(/^(\r\n|\r|\n)/);
|
|
40
|
-
const termReg = new RegExp(/^\[\*(\w+)\]:/);
|
|
41
66
|
let currentLine = startLine;
|
|
42
67
|
|
|
43
|
-
// Allow multiline term definition
|
|
68
|
+
// Allow multiline term definition.
|
|
69
|
+
// Blank lines normally terminate the definition, but we look ahead
|
|
70
|
+
// past them: if the next non-blank line is an {% include %} directive,
|
|
71
|
+
// we keep scanning so that multiple includes can be part of one term.
|
|
44
72
|
for (; currentLine < endLine; currentLine++) {
|
|
45
73
|
const nextLineStart = state.bMarks[currentLine + 1];
|
|
46
74
|
const nextLineEnd = state.eMarks[currentLine + 1];
|
|
@@ -50,10 +78,16 @@ export function termDefinitions(md: MarkdownIt, options: MarkdownItPluginOpts) {
|
|
|
50
78
|
? state.src[nextLineStart]
|
|
51
79
|
: state.src.slice(nextLineStart, nextLineEnd);
|
|
52
80
|
|
|
53
|
-
if (
|
|
81
|
+
if (TERM_DEF_RE.test(nextLine)) {
|
|
54
82
|
break;
|
|
55
83
|
}
|
|
56
84
|
|
|
85
|
+
if (NEW_LINE_RE.test(nextLine)) {
|
|
86
|
+
if (!hasIncludeAfterBlanks(state, currentLine + 1, endLine)) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
57
91
|
state.line = currentLine + 1;
|
|
58
92
|
}
|
|
59
93
|
|