stream-markdown-parser 0.0.24 → 0.0.26
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/index.d.ts.map +1 -1
- package/dist/index.js +277 -199
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -100,7 +100,7 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
100
100
|
for (let i = 0; i < toks.length; i++) {
|
|
101
101
|
const t = toks[i];
|
|
102
102
|
if (t.type === "html_block") {
|
|
103
|
-
const tag = t.content?.match(/<([^\s>/]+)/)?.[1] ?? "";
|
|
103
|
+
const tag = (t.content?.match(/<([^\s>/]+)/)?.[1] ?? "").toLowerCase();
|
|
104
104
|
if (!/<\s*\/\s*[^\s>]+\s*>/.test(t.content || "")) tagStack.push([tag, i]);
|
|
105
105
|
else if (tagStack.length > 0 && tagStack[tagStack.length - 1][0] === tag) tagStack.pop();
|
|
106
106
|
continue;
|
|
@@ -111,7 +111,7 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
111
111
|
continue;
|
|
112
112
|
}
|
|
113
113
|
const content = t.content || "";
|
|
114
|
-
const isClosingTag =
|
|
114
|
+
const isClosingTag = new RegExp(`<\\s*\\/\\s*${tagStack[tagStack.length - 1][0]}\\s*>`, "i").test(content);
|
|
115
115
|
if (content) {
|
|
116
116
|
const [, openIndex] = tagStack[tagStack.length - 1];
|
|
117
117
|
const openToken = toks[openIndex];
|
|
@@ -126,7 +126,11 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
126
126
|
for (let i = 0; i < toks.length; i++) {
|
|
127
127
|
const t = toks[i];
|
|
128
128
|
if (t.type === "html_block") {
|
|
129
|
-
const tag = t.content?.match(/<([^\s>/]+)/)?.[1] ?? "";
|
|
129
|
+
const tag = (t.content?.match(/<([^\s>/]+)/)?.[1] ?? "").toLowerCase();
|
|
130
|
+
if (tag.startsWith("!") || tag.startsWith("?")) {
|
|
131
|
+
t.loading = false;
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
130
134
|
if ([
|
|
131
135
|
"br",
|
|
132
136
|
"hr",
|
|
@@ -140,11 +144,11 @@ function applyFixHtmlInlineTokens(md) {
|
|
|
140
144
|
"li"
|
|
141
145
|
].includes(tag)) continue;
|
|
142
146
|
t.type = "inline";
|
|
143
|
-
const loading = t.content?.includes(`</${tag}>`) ? false : t.loading !== void 0 ? t.loading : true;
|
|
147
|
+
const loading = t.content?.toLowerCase().includes(`</${tag}>`) ? false : t.loading !== void 0 ? t.loading : true;
|
|
144
148
|
t.children = [{
|
|
145
149
|
type: "html_block",
|
|
146
150
|
content: t.content,
|
|
147
|
-
tag
|
|
151
|
+
tag,
|
|
148
152
|
loading
|
|
149
153
|
}];
|
|
150
154
|
continue;
|
|
@@ -246,6 +250,76 @@ function applyFixLinkInline(md) {
|
|
|
246
250
|
|
|
247
251
|
//#endregion
|
|
248
252
|
//#region src/plugins/fixLinkTokens.ts
|
|
253
|
+
function textToken(content) {
|
|
254
|
+
return {
|
|
255
|
+
type: "text",
|
|
256
|
+
content,
|
|
257
|
+
raw: content
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function pushEmOpen(arr, type) {
|
|
261
|
+
if (type === 1) arr.push({
|
|
262
|
+
type: "em_open",
|
|
263
|
+
tag: "em",
|
|
264
|
+
nesting: 1
|
|
265
|
+
});
|
|
266
|
+
else if (type === 2) arr.push({
|
|
267
|
+
type: "strong_open",
|
|
268
|
+
tag: "strong",
|
|
269
|
+
nesting: 1
|
|
270
|
+
});
|
|
271
|
+
else if (type === 3) {
|
|
272
|
+
arr.push({
|
|
273
|
+
type: "strong_open",
|
|
274
|
+
tag: "strong",
|
|
275
|
+
nesting: 1
|
|
276
|
+
});
|
|
277
|
+
arr.push({
|
|
278
|
+
type: "em_open",
|
|
279
|
+
tag: "em",
|
|
280
|
+
nesting: 1
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function pushEmClose(arr, type) {
|
|
285
|
+
if (type === 1) arr.push({
|
|
286
|
+
type: "em_close",
|
|
287
|
+
tag: "em",
|
|
288
|
+
nesting: -1
|
|
289
|
+
});
|
|
290
|
+
else if (type === 2) arr.push({
|
|
291
|
+
type: "strong_close",
|
|
292
|
+
tag: "strong",
|
|
293
|
+
nesting: -1
|
|
294
|
+
});
|
|
295
|
+
else if (type === 3) {
|
|
296
|
+
arr.push({
|
|
297
|
+
type: "em_close",
|
|
298
|
+
tag: "em",
|
|
299
|
+
nesting: -1
|
|
300
|
+
});
|
|
301
|
+
arr.push({
|
|
302
|
+
type: "strong_close",
|
|
303
|
+
tag: "strong",
|
|
304
|
+
nesting: -1
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
function createLinkToken(text, href, loading) {
|
|
309
|
+
return {
|
|
310
|
+
type: "link",
|
|
311
|
+
loading,
|
|
312
|
+
href,
|
|
313
|
+
title: "",
|
|
314
|
+
text,
|
|
315
|
+
children: [{
|
|
316
|
+
type: "text",
|
|
317
|
+
content: text,
|
|
318
|
+
raw: text
|
|
319
|
+
}],
|
|
320
|
+
raw: String(`[${text}](${href})`)
|
|
321
|
+
};
|
|
322
|
+
}
|
|
249
323
|
function applyFixLinkTokens(md) {
|
|
250
324
|
md.core.ruler.after("inline", "fix_link_tokens", (state) => {
|
|
251
325
|
const toks = state.tokens ?? [];
|
|
@@ -262,7 +336,15 @@ function applyFixLinkTokens(md) {
|
|
|
262
336
|
function fixLinkToken(tokens) {
|
|
263
337
|
if (tokens.length < 4) return tokens;
|
|
264
338
|
for (let i = 0; i <= tokens.length - 1; i++) {
|
|
339
|
+
if (i < 0) i = 0;
|
|
265
340
|
if (!tokens[i]) break;
|
|
341
|
+
if (tokens[i]?.type === "em_open" && tokens[i - 1]?.type === "text" && tokens[i - 1].content?.endsWith("*")) {
|
|
342
|
+
const beforeText = tokens[i - 1].content?.replace(/(\*+)$/, "") || "";
|
|
343
|
+
tokens[i - 1].content = beforeText;
|
|
344
|
+
tokens[i].type = "strong_open";
|
|
345
|
+
tokens[i].tag = "strong";
|
|
346
|
+
tokens[i].markup = "**";
|
|
347
|
+
}
|
|
266
348
|
if (tokens[i]?.type === "text" && tokens[i].content?.endsWith("(") && tokens[i + 1]?.type === "link_open") {
|
|
267
349
|
const match = tokens[i].content.match(/\[([^\]]+)\]/);
|
|
268
350
|
if (match) {
|
|
@@ -271,116 +353,55 @@ function fixLinkToken(tokens) {
|
|
|
271
353
|
const replacerTokens = [];
|
|
272
354
|
if (emphasisMatch) {
|
|
273
355
|
beforeText = beforeText.slice(0, emphasisMatch.index);
|
|
274
|
-
if (beforeText) replacerTokens.push(
|
|
275
|
-
type: "text",
|
|
276
|
-
content: beforeText,
|
|
277
|
-
raw: beforeText
|
|
278
|
-
});
|
|
356
|
+
if (beforeText) replacerTokens.push(textToken(beforeText));
|
|
279
357
|
const text = match[1];
|
|
280
358
|
const type = emphasisMatch[1].length;
|
|
281
|
-
|
|
282
|
-
type: "em_open",
|
|
283
|
-
tag: "em",
|
|
284
|
-
nesting: 1
|
|
285
|
-
});
|
|
286
|
-
else if (type === 2) replacerTokens.push({
|
|
287
|
-
type: "strong_open",
|
|
288
|
-
tag: "strong",
|
|
289
|
-
nesting: 1
|
|
290
|
-
});
|
|
291
|
-
else if (type === 3) {
|
|
292
|
-
replacerTokens.push({
|
|
293
|
-
type: "strong_open",
|
|
294
|
-
tag: "strong",
|
|
295
|
-
nesting: 1
|
|
296
|
-
});
|
|
297
|
-
replacerTokens.push({
|
|
298
|
-
type: "em_open",
|
|
299
|
-
tag: "em",
|
|
300
|
-
nesting: 1
|
|
301
|
-
});
|
|
302
|
-
}
|
|
359
|
+
pushEmOpen(replacerTokens, type);
|
|
303
360
|
let href = tokens[i + 2]?.content || "";
|
|
304
361
|
if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
|
|
305
362
|
href += tokens[i + 4]?.content || "";
|
|
306
363
|
tokens[i + 4].content = "";
|
|
307
364
|
}
|
|
308
|
-
replacerTokens.push(
|
|
309
|
-
|
|
310
|
-
loading: !tokens[i + 4]?.content?.startsWith(")"),
|
|
311
|
-
href,
|
|
312
|
-
title: "",
|
|
313
|
-
text,
|
|
314
|
-
children: [{
|
|
315
|
-
type: "text",
|
|
316
|
-
content: text,
|
|
317
|
-
raw: text
|
|
318
|
-
}],
|
|
319
|
-
raw: String(`[${text}](${href})`)
|
|
320
|
-
});
|
|
321
|
-
if (type === 1) replacerTokens.push({
|
|
322
|
-
type: "em_close",
|
|
323
|
-
tag: "em",
|
|
324
|
-
nesting: -1
|
|
325
|
-
});
|
|
326
|
-
else if (type === 2) replacerTokens.push({
|
|
327
|
-
type: "strong_close",
|
|
328
|
-
tag: "strong",
|
|
329
|
-
nesting: -1
|
|
330
|
-
});
|
|
331
|
-
else if (type === 3) {
|
|
332
|
-
replacerTokens.push({
|
|
333
|
-
type: "em_close",
|
|
334
|
-
tag: "em",
|
|
335
|
-
nesting: -1
|
|
336
|
-
});
|
|
337
|
-
replacerTokens.push({
|
|
338
|
-
type: "strong_close",
|
|
339
|
-
tag: "strong",
|
|
340
|
-
nesting: -1
|
|
341
|
-
});
|
|
342
|
-
}
|
|
365
|
+
replacerTokens.push(createLinkToken(text, href, !tokens[i + 4]?.content?.startsWith(")")));
|
|
366
|
+
pushEmClose(replacerTokens, type);
|
|
343
367
|
if (tokens[i + 4]?.type === "text") {
|
|
344
368
|
const afterText = tokens[i + 4].content?.replace(/^\)\**/, "");
|
|
345
|
-
if (afterText) replacerTokens.push(
|
|
346
|
-
type: "text",
|
|
347
|
-
content: afterText,
|
|
348
|
-
raw: afterText
|
|
349
|
-
});
|
|
369
|
+
if (afterText) replacerTokens.push(textToken(afterText));
|
|
350
370
|
tokens.splice(i, 5, ...replacerTokens);
|
|
351
371
|
} else tokens.splice(i, 4, ...replacerTokens);
|
|
352
372
|
} else {
|
|
353
|
-
if (beforeText) replacerTokens.push(
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
373
|
+
if (beforeText) replacerTokens.push(textToken(beforeText));
|
|
374
|
+
let text = match[1];
|
|
375
|
+
const emphasisMatch$1 = text.match(/^\*+/);
|
|
376
|
+
if (emphasisMatch$1) {
|
|
377
|
+
const type = emphasisMatch$1[0].length;
|
|
378
|
+
text = text.replace(/^\*+/, "").replace(/\*+$/, "");
|
|
379
|
+
let href$1 = tokens[i + 2]?.content || "";
|
|
380
|
+
if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
|
|
381
|
+
href$1 += tokens[i + 4]?.content || "";
|
|
382
|
+
tokens[i + 4].content = "";
|
|
383
|
+
}
|
|
384
|
+
pushEmOpen(replacerTokens, type);
|
|
385
|
+
replacerTokens.push(createLinkToken(text, href$1, !tokens[i + 4]?.content?.startsWith(")")));
|
|
386
|
+
pushEmClose(replacerTokens, type);
|
|
387
|
+
if (tokens[i + 4]?.type === "text") {
|
|
388
|
+
const afterText = tokens[i + 4].content?.replace(/^\)/, "");
|
|
389
|
+
if (afterText) replacerTokens.push(textToken(afterText));
|
|
390
|
+
tokens.splice(i, 5, ...replacerTokens);
|
|
391
|
+
} else tokens.splice(i, 4, ...replacerTokens);
|
|
392
|
+
if (i === 0) i = replacerTokens.length - 1;
|
|
393
|
+
else i -= replacerTokens.length - 1;
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
359
396
|
let href = tokens[i + 2]?.content || "";
|
|
360
397
|
if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
|
|
361
398
|
href += tokens[i + 4]?.content || "";
|
|
362
399
|
tokens[i + 4].content = "";
|
|
363
400
|
}
|
|
364
|
-
replacerTokens.push(
|
|
365
|
-
type: "link",
|
|
366
|
-
loading: !tokens[i + 4]?.content?.startsWith(")"),
|
|
367
|
-
href,
|
|
368
|
-
title: "",
|
|
369
|
-
text,
|
|
370
|
-
children: [{
|
|
371
|
-
type: "text",
|
|
372
|
-
content: text,
|
|
373
|
-
raw: text
|
|
374
|
-
}],
|
|
375
|
-
raw: String(`[${text}](${href})`)
|
|
376
|
-
}]);
|
|
401
|
+
replacerTokens.push(createLinkToken(text, href, !tokens[i + 4]?.content?.startsWith(")")));
|
|
377
402
|
if (tokens[i + 4]?.type === "text") {
|
|
378
403
|
const afterText = tokens[i + 4].content?.replace(/^\)/, "");
|
|
379
|
-
if (afterText) replacerTokens.push(
|
|
380
|
-
type: "text",
|
|
381
|
-
content: afterText,
|
|
382
|
-
raw: afterText
|
|
383
|
-
});
|
|
404
|
+
if (afterText) replacerTokens.push(textToken(afterText));
|
|
384
405
|
tokens.splice(i, 5, ...replacerTokens);
|
|
385
406
|
} else tokens.splice(i, 4, ...replacerTokens);
|
|
386
407
|
}
|
|
@@ -399,25 +420,9 @@ function fixLinkToken(tokens) {
|
|
|
399
420
|
href += tokens[i + 3]?.content?.slice(0, m) || "";
|
|
400
421
|
tokens[i + 3].content = "";
|
|
401
422
|
}
|
|
402
|
-
replacerTokens.push(
|
|
403
|
-
type: "link",
|
|
404
|
-
loading,
|
|
405
|
-
href,
|
|
406
|
-
title: "",
|
|
407
|
-
text,
|
|
408
|
-
children: [{
|
|
409
|
-
type: "text",
|
|
410
|
-
content: text,
|
|
411
|
-
raw: text
|
|
412
|
-
}],
|
|
413
|
-
raw: String(`[${text}](${href})`)
|
|
414
|
-
});
|
|
423
|
+
replacerTokens.push(createLinkToken(text, href, loading));
|
|
415
424
|
const afterText = tokens[i + 3].content?.replace(/^\)\**/, "");
|
|
416
|
-
if (afterText) replacerTokens.push(
|
|
417
|
-
type: "text",
|
|
418
|
-
content: afterText,
|
|
419
|
-
raw: afterText
|
|
420
|
-
});
|
|
425
|
+
if (afterText) replacerTokens.push(textToken(afterText));
|
|
421
426
|
tokens.splice(i - 4, 8, ...replacerTokens);
|
|
422
427
|
} else {
|
|
423
428
|
replacerTokens.push({
|
|
@@ -436,24 +441,67 @@ function fixLinkToken(tokens) {
|
|
|
436
441
|
tokens.splice(i - 4, 7, ...replacerTokens);
|
|
437
442
|
}
|
|
438
443
|
continue;
|
|
444
|
+
} else if (tokens[i - 1].content === "](" && tokens[i - 3]?.type === "text" && tokens[i - 3].content?.endsWith(")")) if (tokens[i - 2]?.type === "strong_open") {
|
|
445
|
+
const [beforeText, linText] = tokens[i - 3].content?.split("[**") || [];
|
|
446
|
+
tokens[i + 1].content = linText || "";
|
|
447
|
+
tokens[i - 3].content = beforeText || "";
|
|
448
|
+
tokens[i - 1].content = "";
|
|
449
|
+
} else if (tokens[i - 2]?.type === "em_open") {
|
|
450
|
+
const [beforeText, linText] = tokens[i - 3].content?.split("[*") || [];
|
|
451
|
+
tokens[i + 1].content = linText || "";
|
|
452
|
+
tokens[i - 3].content = beforeText || "";
|
|
453
|
+
tokens[i - 1].content = "";
|
|
454
|
+
} else {
|
|
455
|
+
const [beforeText, linText] = tokens[i - 3].content?.split("[") || [];
|
|
456
|
+
tokens[i + 1].content = linText || "";
|
|
457
|
+
tokens[i - 3].content = beforeText || "";
|
|
458
|
+
tokens[i - 1].content = "";
|
|
439
459
|
}
|
|
440
460
|
}
|
|
441
|
-
if (tokens[i].type === "link_close" && tokens[i].nesting === -1 && tokens[i + 1]?.type === "text" && tokens[i - 1]?.type === "text"
|
|
442
|
-
|
|
461
|
+
if (tokens[i].type === "link_close" && tokens[i].nesting === -1 && tokens[i + 1]?.type === "text" && tokens[i - 1]?.type === "text") {
|
|
462
|
+
let loading = true;
|
|
443
463
|
const text = tokens[i - 1].content || "";
|
|
444
464
|
let href = tokens[i - 2].attrs?.[0]?.[1] || "";
|
|
445
465
|
let count = 3;
|
|
446
|
-
|
|
466
|
+
let deleteCount = 2;
|
|
467
|
+
const emphasisMatch = (tokens[i - 3]?.content || "").match(/^(\*+)$/);
|
|
468
|
+
const replacerTokens = [];
|
|
469
|
+
if (emphasisMatch) {
|
|
470
|
+
deleteCount += 1;
|
|
471
|
+
const type = emphasisMatch[1].length;
|
|
472
|
+
pushEmOpen(replacerTokens, type);
|
|
473
|
+
}
|
|
474
|
+
if (tokens[i].markup === "" || tokens[i + 1].type === "text" && (tokens[i + 1].content === "." || tokens[i + 1].content === "?")) loading = false;
|
|
475
|
+
if (tokens[i].markup === "linkify" && tokens[i + 1]?.type === "text" && !tokens[i + 1]?.content?.startsWith(" ")) {
|
|
447
476
|
const m = (tokens[i + 1]?.content ?? "").indexOf(")");
|
|
448
477
|
if (m === -1) {
|
|
449
478
|
href += tokens[i + 1]?.content?.slice(0, m) || "";
|
|
450
479
|
tokens[i + 1].content = "";
|
|
451
|
-
}
|
|
480
|
+
} else loading = false;
|
|
481
|
+
count += 1;
|
|
482
|
+
} else if (tokens[i + 1].type === "text" && tokens[i + 1]?.content?.startsWith("](")) {
|
|
452
483
|
count += 1;
|
|
484
|
+
for (let j = i + 1; j < tokens.length; j++) {
|
|
485
|
+
const type = emphasisMatch ? emphasisMatch[1].length : tokens[i - 3].markup.length;
|
|
486
|
+
const t = tokens[j];
|
|
487
|
+
if (type === 1 && t.type === "em_close") {
|
|
488
|
+
loading = false;
|
|
489
|
+
break;
|
|
490
|
+
} else if (type === 2 && t.type === "strong_close") {
|
|
491
|
+
loading = false;
|
|
492
|
+
break;
|
|
493
|
+
} else if (type === 3) {
|
|
494
|
+
if (t.type === "em_close" || t.type === "strong_close") {
|
|
495
|
+
loading = false;
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
count += 1;
|
|
500
|
+
}
|
|
453
501
|
}
|
|
454
|
-
|
|
502
|
+
replacerTokens.push({
|
|
455
503
|
type: "link",
|
|
456
|
-
loading
|
|
504
|
+
loading,
|
|
457
505
|
href,
|
|
458
506
|
title: "",
|
|
459
507
|
text,
|
|
@@ -464,37 +512,19 @@ function fixLinkToken(tokens) {
|
|
|
464
512
|
}],
|
|
465
513
|
raw: String(`[${text}](${href})`)
|
|
466
514
|
});
|
|
467
|
-
|
|
515
|
+
if (emphasisMatch) {
|
|
516
|
+
const type = emphasisMatch[1].length;
|
|
517
|
+
pushEmClose(replacerTokens, type);
|
|
518
|
+
}
|
|
519
|
+
tokens.splice(i - deleteCount, count, ...replacerTokens);
|
|
520
|
+
i -= replacerTokens.length - 1;
|
|
521
|
+
continue;
|
|
522
|
+
} else if (tokens[i].content?.startsWith("](") && tokens[i - 1].markup?.includes("*") && tokens[i - 4]?.type === "text" && tokens[i - 4].content?.endsWith("[")) {
|
|
468
523
|
const type = tokens[i - 1].markup.length;
|
|
469
524
|
const replacerTokens = [];
|
|
470
|
-
const beforeText = tokens[i - 4].content.slice(0, tokens[i - 4].content.length -
|
|
471
|
-
if (beforeText) replacerTokens.push(
|
|
472
|
-
|
|
473
|
-
content: beforeText,
|
|
474
|
-
raw: beforeText
|
|
475
|
-
});
|
|
476
|
-
if (type === 1) replacerTokens.push({
|
|
477
|
-
type: "em_open",
|
|
478
|
-
tag: "em",
|
|
479
|
-
nesting: 1
|
|
480
|
-
});
|
|
481
|
-
else if (type === 2) replacerTokens.push({
|
|
482
|
-
type: "strong_open",
|
|
483
|
-
tag: "strong",
|
|
484
|
-
nesting: 1
|
|
485
|
-
});
|
|
486
|
-
else if (type === 3) {
|
|
487
|
-
replacerTokens.push({
|
|
488
|
-
type: "strong_open",
|
|
489
|
-
tag: "strong",
|
|
490
|
-
nesting: 1
|
|
491
|
-
});
|
|
492
|
-
replacerTokens.push({
|
|
493
|
-
type: "em_open",
|
|
494
|
-
tag: "em",
|
|
495
|
-
nesting: 1
|
|
496
|
-
});
|
|
497
|
-
}
|
|
525
|
+
const beforeText = tokens[i - 4].content.slice(0, tokens[i - 4].content.length - type);
|
|
526
|
+
if (beforeText) replacerTokens.push(textToken(beforeText));
|
|
527
|
+
pushEmOpen(replacerTokens, type);
|
|
498
528
|
const text = tokens[i - 2].content || "";
|
|
499
529
|
let href = tokens[i].content.slice(2);
|
|
500
530
|
let loading = true;
|
|
@@ -506,48 +536,11 @@ function fixLinkToken(tokens) {
|
|
|
506
536
|
tokens[i + 1].content = "";
|
|
507
537
|
}
|
|
508
538
|
}
|
|
509
|
-
replacerTokens.push(
|
|
510
|
-
|
|
511
|
-
loading,
|
|
512
|
-
href,
|
|
513
|
-
title: "",
|
|
514
|
-
text,
|
|
515
|
-
children: [{
|
|
516
|
-
type: "text",
|
|
517
|
-
content: text,
|
|
518
|
-
raw: text
|
|
519
|
-
}],
|
|
520
|
-
raw: String(`[${text}](${href})`)
|
|
521
|
-
});
|
|
522
|
-
if (type === 1) replacerTokens.push({
|
|
523
|
-
type: "em_close",
|
|
524
|
-
tag: "em",
|
|
525
|
-
nesting: -1
|
|
526
|
-
});
|
|
527
|
-
else if (type === 2) replacerTokens.push({
|
|
528
|
-
type: "strong_close",
|
|
529
|
-
tag: "strong",
|
|
530
|
-
nesting: -1
|
|
531
|
-
});
|
|
532
|
-
else if (type === 3) {
|
|
533
|
-
replacerTokens.push({
|
|
534
|
-
type: "em_close",
|
|
535
|
-
tag: "em",
|
|
536
|
-
nesting: -1
|
|
537
|
-
});
|
|
538
|
-
replacerTokens.push({
|
|
539
|
-
type: "strong_close",
|
|
540
|
-
tag: "strong",
|
|
541
|
-
nesting: -1
|
|
542
|
-
});
|
|
543
|
-
}
|
|
539
|
+
replacerTokens.push(createLinkToken(text, href, loading));
|
|
540
|
+
pushEmClose(replacerTokens, type);
|
|
544
541
|
if (tokens[i + 1]?.type === "text") {
|
|
545
542
|
const afterText = tokens[i + 1].content?.replace(/^\)\**/, "");
|
|
546
|
-
if (afterText) replacerTokens.push(
|
|
547
|
-
type: "text",
|
|
548
|
-
content: afterText,
|
|
549
|
-
raw: afterText
|
|
550
|
-
});
|
|
543
|
+
if (afterText) replacerTokens.push(textToken(afterText));
|
|
551
544
|
tokens.splice(i - 4, 8, ...replacerTokens);
|
|
552
545
|
} else if (tokens[i + 1]?.type === "link_open") tokens.splice(i - 4, 10, ...replacerTokens);
|
|
553
546
|
else tokens.splice(i - 4, 7, ...replacerTokens);
|
|
@@ -1163,8 +1156,8 @@ function applyMath(md, mathOpts) {
|
|
|
1163
1156
|
pushText(toPushBefore.slice(0, _match.index));
|
|
1164
1157
|
const strongToken = s.push("strong_open", "", 0);
|
|
1165
1158
|
strongToken.markup = _match[0];
|
|
1166
|
-
const textToken = s.push("text", "", 0);
|
|
1167
|
-
textToken.content = after;
|
|
1159
|
+
const textToken$1 = s.push("text", "", 0);
|
|
1160
|
+
textToken$1.content = after;
|
|
1168
1161
|
s.push("strong_close", "", 0);
|
|
1169
1162
|
} else pushText(toPushBefore);
|
|
1170
1163
|
}
|
|
@@ -1386,7 +1379,7 @@ function parseEmphasisToken(tokens, startIndex) {
|
|
|
1386
1379
|
let i = startIndex + 1;
|
|
1387
1380
|
const innerTokens = [];
|
|
1388
1381
|
while (i < tokens.length && tokens[i].type !== "em_close") {
|
|
1389
|
-
emText += String(tokens[i].content ?? "");
|
|
1382
|
+
emText += String(tokens[i].content ?? tokens[i]?.text ?? "");
|
|
1390
1383
|
innerTokens.push(tokens[i]);
|
|
1391
1384
|
i++;
|
|
1392
1385
|
}
|
|
@@ -2052,6 +2045,13 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2052
2045
|
if (currentTextNode) {
|
|
2053
2046
|
currentTextNode.content += "\n";
|
|
2054
2047
|
currentTextNode.raw += "\n";
|
|
2048
|
+
} else {
|
|
2049
|
+
currentTextNode = {
|
|
2050
|
+
type: "text",
|
|
2051
|
+
content: "\n",
|
|
2052
|
+
raw: "\n"
|
|
2053
|
+
};
|
|
2054
|
+
result.push(currentTextNode);
|
|
2055
2055
|
}
|
|
2056
2056
|
i++;
|
|
2057
2057
|
break;
|
|
@@ -2198,6 +2198,10 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2198
2198
|
function handleTextToken(token) {
|
|
2199
2199
|
let index = result.length - 1;
|
|
2200
2200
|
let content = String(token.content ?? "").replace(/\\/g, "");
|
|
2201
|
+
if (content === "1" && tokens[i - 1]?.tag === "br") {
|
|
2202
|
+
i++;
|
|
2203
|
+
return;
|
|
2204
|
+
}
|
|
2201
2205
|
if (content.startsWith(")") && result[result.length - 1]?.type === "link") content = content.slice(1);
|
|
2202
2206
|
if (content.endsWith("undefined") && !raw?.endsWith("undefined")) content = content.slice(0, -9);
|
|
2203
2207
|
for (; index >= 0; index--) {
|
|
@@ -2222,18 +2226,18 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2222
2226
|
if (!nextToken && /[^\]]\s*\(\s*$/.test(content)) content = content.replace(/\(\s*$/, "");
|
|
2223
2227
|
if (handleCheckboxLike(content)) return;
|
|
2224
2228
|
const preToken = tokens[i - 1];
|
|
2225
|
-
if (content === "[" && !nextToken?.markup?.includes("*") || content === "]" && !preToken
|
|
2229
|
+
if (content === "[" && !nextToken?.markup?.includes("*") || content === "]" && !preToken?.markup?.includes("*")) {
|
|
2226
2230
|
i++;
|
|
2227
2231
|
return;
|
|
2228
2232
|
}
|
|
2229
2233
|
if (handleInlineCodeContent(content, token)) return;
|
|
2230
|
-
if (handleEmphasisAndStrikethrough(content, token)) return;
|
|
2231
2234
|
if (handleInlineImageContent(content, token)) return;
|
|
2235
|
+
if (handleInlineLinkContent(content, token)) return;
|
|
2236
|
+
if (handleEmphasisAndStrikethrough(content, token)) return;
|
|
2232
2237
|
const textNode = parseTextToken({
|
|
2233
2238
|
...token,
|
|
2234
2239
|
content
|
|
2235
2240
|
});
|
|
2236
|
-
if (handleInlineLinkContent(content, token)) return;
|
|
2237
2241
|
if (currentTextNode) {
|
|
2238
2242
|
currentTextNode.content += textNode.content.replace(/(\*+|\(|\\)$/, "");
|
|
2239
2243
|
currentTextNode.raw += textNode.raw;
|
|
@@ -2345,7 +2349,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2345
2349
|
let textNodeContent = content.slice(0, linkStart);
|
|
2346
2350
|
const linkEnd = content.indexOf("](", linkStart);
|
|
2347
2351
|
if (linkEnd !== -1) {
|
|
2348
|
-
const textToken = tokens[i + 2];
|
|
2352
|
+
const textToken$1 = tokens[i + 2];
|
|
2349
2353
|
let text = content.slice(linkStart + 1, linkEnd);
|
|
2350
2354
|
if (text.includes("[")) {
|
|
2351
2355
|
const secondLinkStart = text.indexOf("[");
|
|
@@ -2354,7 +2358,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2354
2358
|
text = content.slice(newLinkStart + 1, linkEnd);
|
|
2355
2359
|
}
|
|
2356
2360
|
const nextToken = tokens[i + 1];
|
|
2357
|
-
if (content.endsWith("](") && nextToken?.type === "link_open" && textToken) {
|
|
2361
|
+
if (content.endsWith("](") && nextToken?.type === "link_open" && textToken$1) {
|
|
2358
2362
|
const last = tokens[i + 4];
|
|
2359
2363
|
let index = 4;
|
|
2360
2364
|
let loading$1 = true;
|
|
@@ -2365,7 +2369,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2365
2369
|
if (textNodeContent) pushText(textNodeContent, textNodeContent);
|
|
2366
2370
|
pushParsed({
|
|
2367
2371
|
type: "link",
|
|
2368
|
-
href: String(textToken.content ?? ""),
|
|
2372
|
+
href: String(textToken$1.content ?? ""),
|
|
2369
2373
|
title: null,
|
|
2370
2374
|
text,
|
|
2371
2375
|
children: [{
|
|
@@ -2381,8 +2385,82 @@ function parseInlineTokens(tokens, raw, pPreToken) {
|
|
|
2381
2385
|
const linkContentEnd = content.indexOf(")", linkEnd);
|
|
2382
2386
|
const href = linkContentEnd !== -1 ? content.slice(linkEnd + 2, linkContentEnd) : "";
|
|
2383
2387
|
const loading = linkContentEnd === -1;
|
|
2388
|
+
let emphasisMatch = textNodeContent.match(/\*+$/);
|
|
2389
|
+
if (emphasisMatch) textNodeContent = textNodeContent.replace(/\*+$/, "");
|
|
2384
2390
|
if (textNodeContent) pushText(textNodeContent, textNodeContent);
|
|
2385
|
-
|
|
2391
|
+
if (!emphasisMatch) emphasisMatch = text.match(/^\*+/);
|
|
2392
|
+
if (emphasisMatch) {
|
|
2393
|
+
const type = emphasisMatch[0].length;
|
|
2394
|
+
text = text.replace(/^\*+/, "").replace(/\*+$/, "");
|
|
2395
|
+
const newTokens = [];
|
|
2396
|
+
if (type === 1) newTokens.push({
|
|
2397
|
+
type: "em_open",
|
|
2398
|
+
tag: "em",
|
|
2399
|
+
nesting: 1
|
|
2400
|
+
});
|
|
2401
|
+
else if (type === 2) newTokens.push({
|
|
2402
|
+
type: "strong_open",
|
|
2403
|
+
tag: "strong",
|
|
2404
|
+
nesting: 1
|
|
2405
|
+
});
|
|
2406
|
+
else if (type === 3) {
|
|
2407
|
+
newTokens.push({
|
|
2408
|
+
type: "strong_open",
|
|
2409
|
+
tag: "strong",
|
|
2410
|
+
nesting: 1
|
|
2411
|
+
});
|
|
2412
|
+
newTokens.push({
|
|
2413
|
+
type: "em_open",
|
|
2414
|
+
tag: "em",
|
|
2415
|
+
nesting: 1
|
|
2416
|
+
});
|
|
2417
|
+
}
|
|
2418
|
+
newTokens.push({
|
|
2419
|
+
type: "link",
|
|
2420
|
+
href,
|
|
2421
|
+
title: null,
|
|
2422
|
+
text,
|
|
2423
|
+
children: [{
|
|
2424
|
+
type: "text",
|
|
2425
|
+
content: text,
|
|
2426
|
+
raw: text
|
|
2427
|
+
}],
|
|
2428
|
+
loading
|
|
2429
|
+
});
|
|
2430
|
+
if (type === 1) {
|
|
2431
|
+
newTokens.push({
|
|
2432
|
+
type: "em_close",
|
|
2433
|
+
tag: "em",
|
|
2434
|
+
nesting: -1
|
|
2435
|
+
});
|
|
2436
|
+
const { node } = parseEmphasisToken(newTokens, 0);
|
|
2437
|
+
pushNode(node);
|
|
2438
|
+
} else if (type === 2) {
|
|
2439
|
+
newTokens.push({
|
|
2440
|
+
type: "strong_close",
|
|
2441
|
+
tag: "strong",
|
|
2442
|
+
nesting: -1
|
|
2443
|
+
});
|
|
2444
|
+
const { node } = parseStrongToken(newTokens, 0);
|
|
2445
|
+
pushNode(node);
|
|
2446
|
+
} else if (type === 3) {
|
|
2447
|
+
newTokens.push({
|
|
2448
|
+
type: "em_close",
|
|
2449
|
+
tag: "em",
|
|
2450
|
+
nesting: -1
|
|
2451
|
+
});
|
|
2452
|
+
newTokens.push({
|
|
2453
|
+
type: "strong_close",
|
|
2454
|
+
tag: "strong",
|
|
2455
|
+
nesting: -1
|
|
2456
|
+
});
|
|
2457
|
+
const { node } = parseStrongToken(newTokens, 0);
|
|
2458
|
+
pushNode(node);
|
|
2459
|
+
} else {
|
|
2460
|
+
const { node } = parseEmphasisToken(newTokens, 0);
|
|
2461
|
+
pushNode(node);
|
|
2462
|
+
}
|
|
2463
|
+
} else pushParsed({
|
|
2386
2464
|
type: "link",
|
|
2387
2465
|
href,
|
|
2388
2466
|
title: null,
|