@diplodoc/transform 4.69.3 → 4.70.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.
@@ -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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"}
@@ -88,6 +88,95 @@ function termInlineRule(state, silent) {
88
88
  state.pos = match.endPos;
89
89
  return true;
90
90
  }
91
+ const RAW_CODE_TOKEN_TYPES = new Set(['fence', 'code_block', 'yfm_page-constructor']);
92
+ function collectRawTermMatches(content, reg, out) {
93
+ reg.lastIndex = 0;
94
+ let match;
95
+ while ((match = reg.exec(content))) {
96
+ out.add(':' + match[3]);
97
+ }
98
+ }
99
+ function collectTermsFromRawContent(tokens, reg, out) {
100
+ for (const token of tokens) {
101
+ if (RAW_CODE_TOKEN_TYPES.has(token.type) && token.content) {
102
+ collectRawTermMatches(token.content, reg, out);
103
+ }
104
+ if (token.type === 'inline' && token.children) {
105
+ for (const child of token.children) {
106
+ if (child.type === 'code_inline' && child.content) {
107
+ collectRawTermMatches(child.content, reg, out);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ function collectTermKeysFromInlineChildren(children, out) {
114
+ for (const child of children) {
115
+ if (child.type === 'term_open') {
116
+ const key = child.attrGet('term-key');
117
+ if (key) {
118
+ out.add(key);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ function collectTermsFromContent(tokens, out) {
124
+ let inDfn = false;
125
+ for (const token of tokens) {
126
+ if (token.type === 'dfn_open') {
127
+ inDfn = true;
128
+ continue;
129
+ }
130
+ if (token.type === 'dfn_close') {
131
+ inDfn = false;
132
+ continue;
133
+ }
134
+ if (!inDfn && token.type === 'inline' && token.children) {
135
+ collectTermKeysFromInlineChildren(token.children, out);
136
+ }
137
+ }
138
+ }
139
+ function collectTermsFromDfns(tokens, out, referencedDfns) {
140
+ let inReferencedDfn = false;
141
+ for (const token of tokens) {
142
+ if (token.type === 'dfn_open') {
143
+ const key = (token.attrGet('id') || '').replace(/_element$/, '');
144
+ inReferencedDfn = Boolean(key) && referencedDfns.has(key);
145
+ continue;
146
+ }
147
+ if (token.type === 'dfn_close') {
148
+ inReferencedDfn = false;
149
+ continue;
150
+ }
151
+ if (inReferencedDfn && token.type === 'inline' && token.children) {
152
+ collectTermKeysFromInlineChildren(token.children, out);
153
+ }
154
+ }
155
+ }
156
+ function findDfnCloseIdx(tokens, from) {
157
+ let endIdx = from;
158
+ while (endIdx < tokens.length && tokens[endIdx].type !== 'dfn_close') {
159
+ endIdx++;
160
+ }
161
+ return endIdx;
162
+ }
163
+ function removeUnreferencedDefinitions(tokens, referencedTerms) {
164
+ let idx = 0;
165
+ while (idx < tokens.length) {
166
+ const tok = tokens[idx];
167
+ if (tok.type === 'dfn_open') {
168
+ const termKey = (tok.attrGet('id') || '').replace(/_element$/, '');
169
+ if (termKey && !referencedTerms.has(termKey)) {
170
+ const endIdx = findDfnCloseIdx(tokens, idx + 1);
171
+ if (endIdx < tokens.length) {
172
+ tokens.splice(idx, endIdx - idx + 1);
173
+ continue;
174
+ }
175
+ }
176
+ }
177
+ idx++;
178
+ }
179
+ }
91
180
  const term = (md, options) => {
92
181
  const escapeRE = md.utils.escapeRE;
93
182
  const arrayReplaceAt = md.utils.arrayReplaceAt;
@@ -108,12 +197,21 @@ const term = (md, options) => {
108
197
  if (!state.env.terms) {
109
198
  return;
110
199
  }
111
- const regTerms = Object.keys(state.env.terms)
112
- .map((el) => el.substr(1))
200
+ const termKeys = Object.keys(state.env.terms);
201
+ if (!termKeys.length) {
202
+ return;
203
+ }
204
+ const referencedTerms = new Set();
205
+ const regTerms = termKeys
206
+ .map((el) => el.slice(1))
113
207
  .map(escapeRE)
114
208
  .join('|');
115
209
  const regText = '\\[([^\\[]+)\\](\\(\\*(' + regTerms + ')\\))';
116
210
  const reg = new RegExp(regText, 'g');
211
+ collectTermsFromRawContent(blockTokens, reg, referencedTerms);
212
+ collectTermsFromContent(blockTokens, referencedTerms);
213
+ // Collect terms transitively referenced inside definitions of referenced terms.
214
+ collectTermsFromDfns(blockTokens, referencedTerms, referencedTerms);
117
215
  for (j = 0, l = blockTokens.length; j < l; j++) {
118
216
  if (blockTokens[j].type === 'heading_open') {
119
217
  while (blockTokens[j].type !== 'heading_close') {
@@ -156,6 +254,7 @@ const term = (md, options) => {
156
254
  while ((termMatch = reg.exec(text))) {
157
255
  const termTitle = termMatch[1];
158
256
  const termKey = termMatch[3];
257
+ referencedTerms.add(':' + termKey);
159
258
  if (termMatch.index > 0 || termMatch[1].length > 0) {
160
259
  token = new state.Token('text', '', 0);
161
260
  token.content = text.slice(pos, termMatch.index);
@@ -183,6 +282,11 @@ const term = (md, options) => {
183
282
  blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);
184
283
  }
185
284
  }
285
+ // Remove definitions without any reference on the page
286
+ // Skip during linting to allow lint rules to check term definitions
287
+ if (!isLintRun) {
288
+ removeUnreferencedDefinitions(state.tokens, referencedTerms);
289
+ }
186
290
  }
187
291
  md.block.ruler.before('reference', 'termDefinitions', (0, termDefinitions_1.termDefinitions)(md, options), {
188
292
  alt: ['paragraph', 'reference'],
@@ -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 (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.1",
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
 
@@ -122,6 +122,120 @@ function termInlineRule(state: StateInline, silent: boolean): boolean {
122
122
  return true;
123
123
  }
124
124
 
125
+ const RAW_CODE_TOKEN_TYPES = new Set(['fence', 'code_block', 'yfm_page-constructor']);
126
+
127
+ function collectRawTermMatches(content: string, reg: RegExp, out: Set<string>) {
128
+ reg.lastIndex = 0;
129
+ let match: RegExpExecArray | null;
130
+
131
+ while ((match = reg.exec(content))) {
132
+ out.add(':' + match[3]);
133
+ }
134
+ }
135
+
136
+ function collectTermsFromRawContent(tokens: Token[], reg: RegExp, out: Set<string>) {
137
+ for (const token of tokens) {
138
+ if (RAW_CODE_TOKEN_TYPES.has(token.type) && token.content) {
139
+ collectRawTermMatches(token.content, reg, out);
140
+ }
141
+
142
+ if (token.type === 'inline' && token.children) {
143
+ for (const child of token.children) {
144
+ if (child.type === 'code_inline' && child.content) {
145
+ collectRawTermMatches(child.content, reg, out);
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+
152
+ function collectTermKeysFromInlineChildren(children: Token[], out: Set<string>) {
153
+ for (const child of children) {
154
+ if (child.type === 'term_open') {
155
+ const key = child.attrGet('term-key');
156
+
157
+ if (key) {
158
+ out.add(key);
159
+ }
160
+ }
161
+ }
162
+ }
163
+
164
+ function collectTermsFromContent(tokens: Token[], out: Set<string>) {
165
+ let inDfn = false;
166
+
167
+ for (const token of tokens) {
168
+ if (token.type === 'dfn_open') {
169
+ inDfn = true;
170
+ continue;
171
+ }
172
+
173
+ if (token.type === 'dfn_close') {
174
+ inDfn = false;
175
+ continue;
176
+ }
177
+
178
+ if (!inDfn && token.type === 'inline' && token.children) {
179
+ collectTermKeysFromInlineChildren(token.children, out);
180
+ }
181
+ }
182
+ }
183
+
184
+ function collectTermsFromDfns(tokens: Token[], out: Set<string>, referencedDfns: Set<string>) {
185
+ let inReferencedDfn = false;
186
+
187
+ for (const token of tokens) {
188
+ if (token.type === 'dfn_open') {
189
+ const key = (token.attrGet('id') || '').replace(/_element$/, '');
190
+
191
+ inReferencedDfn = Boolean(key) && referencedDfns.has(key);
192
+ continue;
193
+ }
194
+
195
+ if (token.type === 'dfn_close') {
196
+ inReferencedDfn = false;
197
+ continue;
198
+ }
199
+
200
+ if (inReferencedDfn && token.type === 'inline' && token.children) {
201
+ collectTermKeysFromInlineChildren(token.children, out);
202
+ }
203
+ }
204
+ }
205
+
206
+ function findDfnCloseIdx(tokens: Token[], from: number) {
207
+ let endIdx = from;
208
+
209
+ while (endIdx < tokens.length && tokens[endIdx].type !== 'dfn_close') {
210
+ endIdx++;
211
+ }
212
+
213
+ return endIdx;
214
+ }
215
+
216
+ function removeUnreferencedDefinitions(tokens: Token[], referencedTerms: Set<string>) {
217
+ let idx = 0;
218
+
219
+ while (idx < tokens.length) {
220
+ const tok = tokens[idx];
221
+
222
+ if (tok.type === 'dfn_open') {
223
+ const termKey = (tok.attrGet('id') || '').replace(/_element$/, '');
224
+
225
+ if (termKey && !referencedTerms.has(termKey)) {
226
+ const endIdx = findDfnCloseIdx(tokens, idx + 1);
227
+
228
+ if (endIdx < tokens.length) {
229
+ tokens.splice(idx, endIdx - idx + 1);
230
+ continue;
231
+ }
232
+ }
233
+ }
234
+
235
+ idx++;
236
+ }
237
+ }
238
+
125
239
  const term: MarkdownItPluginCb = (md, options) => {
126
240
  const escapeRE = md.utils.escapeRE;
127
241
  const arrayReplaceAt = md.utils.arrayReplaceAt;
@@ -150,13 +264,27 @@ const term: MarkdownItPluginCb = (md, options) => {
150
264
  return;
151
265
  }
152
266
 
153
- const regTerms = Object.keys(state.env.terms)
154
- .map((el) => el.substr(1))
267
+ const termKeys = Object.keys(state.env.terms);
268
+
269
+ if (!termKeys.length) {
270
+ return;
271
+ }
272
+
273
+ const referencedTerms = new Set<string>();
274
+
275
+ const regTerms = termKeys
276
+ .map((el) => el.slice(1))
155
277
  .map(escapeRE)
156
278
  .join('|');
157
279
  const regText = '\\[([^\\[]+)\\](\\(\\*(' + regTerms + ')\\))';
158
280
  const reg = new RegExp(regText, 'g');
159
281
 
282
+ collectTermsFromRawContent(blockTokens, reg, referencedTerms);
283
+ collectTermsFromContent(blockTokens, referencedTerms);
284
+
285
+ // Collect terms transitively referenced inside definitions of referenced terms.
286
+ collectTermsFromDfns(blockTokens, referencedTerms, referencedTerms);
287
+
160
288
  for (j = 0, l = blockTokens.length; j < l; j++) {
161
289
  if (blockTokens[j].type === 'heading_open') {
162
290
  while (blockTokens[j].type !== 'heading_close') {
@@ -210,6 +338,8 @@ const term: MarkdownItPluginCb = (md, options) => {
210
338
  const termTitle = termMatch[1];
211
339
  const termKey = termMatch[3];
212
340
 
341
+ referencedTerms.add(':' + termKey);
342
+
213
343
  if (termMatch.index > 0 || termMatch[1].length > 0) {
214
344
  token = new state.Token('text', '', 0);
215
345
  token.content = text.slice(pos, termMatch.index);
@@ -244,6 +374,12 @@ const term: MarkdownItPluginCb = (md, options) => {
244
374
  blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);
245
375
  }
246
376
  }
377
+
378
+ // Remove definitions without any reference on the page
379
+ // Skip during linting to allow lint rules to check term definitions
380
+ if (!isLintRun) {
381
+ removeUnreferencedDefinitions(state.tokens, referencedTerms);
382
+ }
247
383
  }
248
384
 
249
385
  md.block.ruler.before('reference', 'termDefinitions', termDefinitions(md, options), {