@diplodoc/transform 4.69.3 → 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.
@@ -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
- superCode = superCode.replace(codeContent, codeWithLineNumbers);
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;
@@ -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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"}
@@ -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 (newLineReg.test(nextLine) || termReg.test(nextLine)) {
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":"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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.69.3",
3
+ "version": "4.70.0",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -1,7 +1,6 @@
1
1
  import type {Lang} from '../typings';
2
2
 
3
- export const CUSTOM_ID_REGEXP = /\[?{ ?#(\S+) ?}]?/g;
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, CUSTOM_ID_EXCEPTION, CUSTOM_ID_REGEXP} from './constants';
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
- superCode = superCode.replace(codeContent, codeWithLineNumbers);
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
 
@@ -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 (newLineReg.test(nextLine) || termReg.test(nextLine)) {
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