@jared-ye/markdown-tex 1.0.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.
@@ -0,0 +1,488 @@
1
+ "use strict";
2
+ /**
3
+ * Markdown → AST parser.
4
+ * Supports: headings, paragraphs, lists, code block, math block,
5
+ * bold, italic, inline code, link, image, inline math.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.parseMarkdown = parseMarkdown;
9
+ const nodes_1 = require("../ast/nodes");
10
+ const BLOCK_MATH_DOUBLE = '$$';
11
+ const INLINE_MATH_SINGLE = '$';
12
+ const FENCE = '```';
13
+ const THEMATIC_BREAK = '---';
14
+ const HEADING_PREFIX = /^(#{1,6})\s+/;
15
+ function parseMarkdown(input) {
16
+ if (!input || typeof input !== 'string') {
17
+ return (0, nodes_1.createDocument)([]);
18
+ }
19
+ const normalized = input.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
20
+ const blocks = parseBlocks(normalized);
21
+ return (0, nodes_1.createDocument)(blocks);
22
+ }
23
+ function parseBlocks(source) {
24
+ const blocks = [];
25
+ let i = 0;
26
+ const len = source.length;
27
+ while (i < len) {
28
+ const lineEnd = source.indexOf('\n', i);
29
+ const line = lineEnd === -1 ? source.slice(i) : source.slice(i, lineEnd);
30
+ const next = lineEnd === -1 ? len : lineEnd + 1;
31
+ const trimmed = line.trimStart();
32
+ const indent = line.length - trimmed.length;
33
+ if (trimmed === '') {
34
+ i = next;
35
+ continue;
36
+ }
37
+ if (trimmed === THEMATIC_BREAK || /^-{3,}$/.test(trimmed)) {
38
+ blocks.push({ type: 'thematic_break' });
39
+ i = next;
40
+ continue;
41
+ }
42
+ if (trimmed.startsWith(FENCE)) {
43
+ const lang = trimmed.slice(FENCE.length).trim().split(/\s/)[0] || undefined;
44
+ let content = '';
45
+ i = next;
46
+ while (i < len) {
47
+ const endLine = source.indexOf('\n', i);
48
+ const raw = endLine === -1 ? source.slice(i) : source.slice(i, endLine);
49
+ const n = endLine === -1 ? len : endLine + 1;
50
+ if (raw.trim() === FENCE) {
51
+ blocks.push({ type: 'code_block', content: content.trimEnd(), lang: lang || undefined });
52
+ i = n;
53
+ break;
54
+ }
55
+ content += (content ? '\n' : '') + raw;
56
+ i = n;
57
+ }
58
+ continue;
59
+ }
60
+ if (trimmed.startsWith(BLOCK_MATH_DOUBLE)) {
61
+ let mathContent = trimmed.slice(BLOCK_MATH_DOUBLE.length);
62
+ if (mathContent.endsWith(BLOCK_MATH_DOUBLE)) {
63
+ mathContent = mathContent.slice(0, -BLOCK_MATH_DOUBLE.length);
64
+ blocks.push({ type: 'math_block', content: mathContent.trim() });
65
+ i = next;
66
+ continue;
67
+ }
68
+ const acc = [mathContent];
69
+ i = next;
70
+ while (i < len) {
71
+ const endLine = source.indexOf('\n', i);
72
+ const raw = endLine === -1 ? source.slice(i) : source.slice(i, endLine);
73
+ const n = endLine === -1 ? len : endLine + 1;
74
+ if (raw.trim().endsWith(BLOCK_MATH_DOUBLE)) {
75
+ const rest = raw.trim().slice(0, -BLOCK_MATH_DOUBLE.length);
76
+ acc.push(rest);
77
+ blocks.push({ type: 'math_block', content: acc.join('\n').trim() });
78
+ i = n;
79
+ break;
80
+ }
81
+ acc.push(raw);
82
+ i = n;
83
+ }
84
+ continue;
85
+ }
86
+ if (trimmed.startsWith('\\[')) {
87
+ const rest = trimmed.slice(2);
88
+ const endIdx = rest.indexOf('\\]');
89
+ if (endIdx !== -1) {
90
+ blocks.push({ type: 'math_block', content: rest.slice(0, endIdx).trim() });
91
+ i = next;
92
+ continue;
93
+ }
94
+ const acc = [rest];
95
+ i = next;
96
+ while (i < len) {
97
+ const endLine = source.indexOf('\n', i);
98
+ const raw = endLine === -1 ? source.slice(i) : source.slice(i, endLine);
99
+ const n = endLine === -1 ? len : endLine + 1;
100
+ const t = raw.trim();
101
+ if (t.endsWith('\\]')) {
102
+ acc.push(t.slice(0, -2));
103
+ blocks.push({ type: 'math_block', content: acc.join('\n').trim() });
104
+ i = n;
105
+ break;
106
+ }
107
+ acc.push(raw);
108
+ i = n;
109
+ }
110
+ continue;
111
+ }
112
+ const headingMatch = trimmed.match(HEADING_PREFIX);
113
+ if (headingMatch && indent === 0) {
114
+ const level = Math.min(3, headingMatch[1].length);
115
+ const title = trimmed.slice(headingMatch[0].length);
116
+ const children = parseInline(title);
117
+ blocks.push({ type: 'heading', level, children });
118
+ i = next;
119
+ continue;
120
+ }
121
+ const ulMatch = /^(\s*)[*\-]\s+/.exec(line);
122
+ if (ulMatch && (ulMatch[1].length === indent || indent === 0)) {
123
+ const listResult = parseList(source, i, false);
124
+ blocks.push(listResult.node);
125
+ i = listResult.consumed;
126
+ continue;
127
+ }
128
+ const olMatch = /^(\s*)\d+\.\s+/.exec(line);
129
+ if (olMatch && (olMatch[1].length === indent || indent === 0)) {
130
+ const listResult = parseList(source, i, true);
131
+ blocks.push(listResult.node);
132
+ i = listResult.consumed;
133
+ continue;
134
+ }
135
+ if (trimmed.startsWith('>')) {
136
+ const bqResult = parseBlockquote(source, i);
137
+ blocks.push(bqResult.node);
138
+ i = bqResult.consumed;
139
+ continue;
140
+ }
141
+ if (indent === 0 && trimmed.startsWith('|') && trimmed.includes('|', 1)) {
142
+ const tableResult = parseTable(source, i);
143
+ if (tableResult) {
144
+ blocks.push(tableResult.node);
145
+ i = tableResult.consumed;
146
+ continue;
147
+ }
148
+ }
149
+ const paraLines = [trimmed];
150
+ i = next;
151
+ while (i < len) {
152
+ const pe = source.indexOf('\n', i);
153
+ const pline = pe === -1 ? source.slice(i) : source.slice(i, pe);
154
+ const pnext = pe === -1 ? len : pe + 1;
155
+ const ptrim = pline.trimStart();
156
+ const pindent = pline.length - ptrim.length;
157
+ if (ptrim === '')
158
+ break;
159
+ if (ptrim.startsWith(FENCE) || ptrim.startsWith(BLOCK_MATH_DOUBLE) || ptrim.startsWith('\\['))
160
+ break;
161
+ if (HEADING_PREFIX.test(ptrim) && (pindent === 0 || pindent === indent))
162
+ break;
163
+ if (/^\s*[*\-]\s+/.test(pline) || /^\s*\d+\.\s+/.test(pline))
164
+ break;
165
+ if (ptrim.startsWith('>'))
166
+ break;
167
+ if (ptrim.startsWith('|') && ptrim.includes('|', 1))
168
+ break;
169
+ paraLines.push(ptrim);
170
+ i = pnext;
171
+ }
172
+ const paraText = paraLines.join('\n');
173
+ blocks.push({ type: 'paragraph', children: parseInline(paraText) });
174
+ }
175
+ return blocks;
176
+ }
177
+ function parseList(source, start, ordered) {
178
+ const items = [];
179
+ let i = start;
180
+ const len = source.length;
181
+ const itemPattern = ordered ? /^\s*\d+\.\s+/ : /^\s*[*\-]\s+/;
182
+ while (i < len) {
183
+ const lineEnd = source.indexOf('\n', i);
184
+ const line = lineEnd === -1 ? source.slice(i) : source.slice(i, lineEnd);
185
+ const next = lineEnd === -1 ? len : lineEnd + 1;
186
+ const trimmed = line.trimStart();
187
+ if (trimmed === '') {
188
+ i = next;
189
+ break;
190
+ }
191
+ const match = line.match(itemPattern);
192
+ if (!match) {
193
+ if (items.length > 0) {
194
+ const last = items[items.length - 1];
195
+ const lastBlock = last.children[last.children.length - 1];
196
+ if (lastBlock.type === 'paragraph') {
197
+ const extra = [{ type: 'text', value: '\n' }, ...parseInline(trimmed)];
198
+ lastBlock.children.push(...extra);
199
+ }
200
+ }
201
+ i = next;
202
+ continue;
203
+ }
204
+ const itemContent = trimmed.slice(match[0].trimStart().length);
205
+ const paraChildren = parseInline(itemContent);
206
+ items.push({
207
+ type: 'list_item',
208
+ children: [{ type: 'paragraph', children: paraChildren }]
209
+ });
210
+ i = next;
211
+ }
212
+ return {
213
+ node: { type: 'list', ordered, items },
214
+ consumed: i
215
+ };
216
+ }
217
+ function parseBlockquote(source, start) {
218
+ const lines = [];
219
+ let i = start;
220
+ const len = source.length;
221
+ while (i < len) {
222
+ const lineEnd = source.indexOf('\n', i);
223
+ const line = lineEnd === -1 ? source.slice(i) : source.slice(i, lineEnd);
224
+ const next = lineEnd === -1 ? len : lineEnd + 1;
225
+ const t = line.trimStart();
226
+ if (t === '')
227
+ break;
228
+ if (!t.startsWith('>'))
229
+ break;
230
+ const content = t.slice(1).replace(/^\s/, '');
231
+ lines.push(content);
232
+ i = next;
233
+ }
234
+ const inner = lines.join('\n');
235
+ const innerBlocks = parseBlocks(inner);
236
+ return {
237
+ node: { type: 'blockquote', children: innerBlocks },
238
+ consumed: i
239
+ };
240
+ }
241
+ function splitTableRow(line) {
242
+ const trimmed = line.trim();
243
+ const withoutBorders = trimmed.replace(/^\|/, '').replace(/\|$/, '');
244
+ return withoutBorders.split('|').map((c) => c.trim());
245
+ }
246
+ function isTableSeparator(line) {
247
+ const t = line.trim();
248
+ if (!t.startsWith('|') || !t.endsWith('|'))
249
+ return false;
250
+ const cells = splitTableRow(line);
251
+ if (cells.length === 0)
252
+ return false;
253
+ return cells.every((c) => /^[-:\s]+$/.test(c) && c.includes('-'));
254
+ }
255
+ function parseTable(source, start) {
256
+ const lines = [];
257
+ let i = start;
258
+ const len = source.length;
259
+ while (i < len) {
260
+ const lineEnd = source.indexOf('\n', i);
261
+ const line = lineEnd === -1 ? source.slice(i) : source.slice(i, lineEnd);
262
+ const next = lineEnd === -1 ? len : lineEnd + 1;
263
+ const trimmed = line.trim();
264
+ if (trimmed === '')
265
+ break;
266
+ if (!trimmed.startsWith('|') || !trimmed.includes('|', 1))
267
+ break;
268
+ lines.push(trimmed);
269
+ i = next;
270
+ }
271
+ if (lines.length === 0)
272
+ return null;
273
+ const headerRow = splitTableRow(lines[0]);
274
+ if (headerRow.length === 0)
275
+ return null;
276
+ let rowStart = 1;
277
+ if (lines.length > 1 && isTableSeparator(lines[1])) {
278
+ rowStart = 2;
279
+ }
280
+ const rows = [];
281
+ for (let r = rowStart; r < lines.length; r++) {
282
+ rows.push(splitTableRow(lines[r]));
283
+ }
284
+ return {
285
+ node: { type: 'table', headerRow, rows },
286
+ consumed: i
287
+ };
288
+ }
289
+ function parseInline(text) {
290
+ const out = [];
291
+ let i = 0;
292
+ const len = text.length;
293
+ while (i < len) {
294
+ if (text[i] === '\\' && text[i + 1] === '(') {
295
+ const end = text.indexOf('\\)', i + 2);
296
+ if (end !== -1) {
297
+ out.push({ type: 'math_inline', content: text.slice(i + 2, end).trim() });
298
+ i = end + 2;
299
+ continue;
300
+ }
301
+ }
302
+ const inlineMathStart = text.indexOf(INLINE_MATH_SINGLE, i);
303
+ if (inlineMathStart !== -1) {
304
+ const afterDollar = inlineMathStart + 1;
305
+ if (afterDollar < len && text[afterDollar] !== INLINE_MATH_SINGLE) {
306
+ const end = text.indexOf(INLINE_MATH_SINGLE, afterDollar);
307
+ if (end !== -1) {
308
+ if (i < inlineMathStart) {
309
+ out.push(...parseInlineNoMath(text.slice(i, inlineMathStart)));
310
+ }
311
+ out.push({ type: 'math_inline', content: text.slice(afterDollar, end).trim() });
312
+ i = end + 1;
313
+ continue;
314
+ }
315
+ }
316
+ }
317
+ const imgRe = /!\[([^\]]*)\]\(([^)]+)\)/;
318
+ const imgMatch = text.slice(i).match(imgRe);
319
+ if (imgMatch && text.slice(i).indexOf(imgMatch[0]) === 0) {
320
+ out.push({ type: 'image', url: imgMatch[2], alt: imgMatch[1] || undefined });
321
+ i += imgMatch[0].length;
322
+ continue;
323
+ }
324
+ const linkRe = /\[([^\]]+)\]\(([^)]+)\)/;
325
+ const linkMatch = text.slice(i).match(linkRe);
326
+ if (linkMatch && !text.slice(i).startsWith('![') && text.slice(i).indexOf(linkMatch[0]) === 0) {
327
+ out.push({ type: 'link', url: linkMatch[2], children: parseInlineNoMath(linkMatch[1]) });
328
+ i += linkMatch[0].length;
329
+ continue;
330
+ }
331
+ const codeStart = text.indexOf('`', i);
332
+ if (codeStart !== -1) {
333
+ let end = codeStart + 1;
334
+ while (end < len && text[end] !== '`')
335
+ end++;
336
+ if (end < len) {
337
+ if (i < codeStart) {
338
+ out.push(...parseInlineNoMath(text.slice(i, codeStart)));
339
+ }
340
+ out.push({ type: 'inline_code', value: text.slice(codeStart + 1, end) });
341
+ i = end + 1;
342
+ continue;
343
+ }
344
+ }
345
+ if (text.slice(i, i + 2) === '**') {
346
+ const close = findClosingDelim(text, i + 2, '**');
347
+ if (close !== -1) {
348
+ const inner = text.slice(i + 2, close);
349
+ out.push({ type: 'strong', children: parseInlineNoMath(inner) });
350
+ i = close + 2;
351
+ continue;
352
+ }
353
+ }
354
+ if (text[i] === '*' && text[i + 1] !== '*') {
355
+ const close = text.indexOf('*', i + 1);
356
+ if (close !== -1) {
357
+ if (i < close) {
358
+ const inner = text.slice(i + 1, close);
359
+ out.push({ type: 'emphasis', children: parseInlineNoMath(inner) });
360
+ i = close + 1;
361
+ continue;
362
+ }
363
+ }
364
+ }
365
+ if (text.slice(i, i + 2) === '~~') {
366
+ const close = text.indexOf('~~', i + 2);
367
+ if (close !== -1) {
368
+ const inner = text.slice(i + 2, close);
369
+ out.push({ type: 'strikethrough', children: parseInlineNoMath(inner) });
370
+ i = close + 2;
371
+ continue;
372
+ }
373
+ }
374
+ const nextSpecial = findNextInlineSpecial(text, i);
375
+ const end = nextSpecial === -1 ? len : nextSpecial;
376
+ if (end > i) {
377
+ const raw = text.slice(i, end);
378
+ if (raw.length > 0) {
379
+ out.push({ type: 'text', value: raw });
380
+ }
381
+ i = end;
382
+ }
383
+ else {
384
+ out.push({ type: 'text', value: text[i] });
385
+ i++;
386
+ }
387
+ }
388
+ return out;
389
+ }
390
+ function findClosingDelim(s, start, delim) {
391
+ let i = start;
392
+ while (i <= s.length - delim.length) {
393
+ if (s.slice(i, i + delim.length) === delim)
394
+ return i;
395
+ if (s[i] === '\\')
396
+ i++;
397
+ i++;
398
+ }
399
+ return -1;
400
+ }
401
+ function findNextInlineSpecial(s, start) {
402
+ const specials = ['*', '`', '[', '!', '$', '\\', '~'];
403
+ let i = start;
404
+ while (i < s.length) {
405
+ if (specials.includes(s[i]))
406
+ return i;
407
+ if (s[i] === '\\')
408
+ i++;
409
+ i++;
410
+ }
411
+ return -1;
412
+ }
413
+ function parseInlineNoMath(text) {
414
+ const out = [];
415
+ let i = 0;
416
+ const len = text.length;
417
+ while (i < len) {
418
+ if (text[i] === '\\' && text[i + 1] === '(') {
419
+ const end = text.indexOf('\\)', i + 2);
420
+ if (end !== -1) {
421
+ out.push({ type: 'math_inline', content: text.slice(i + 2, end).trim() });
422
+ i = end + 2;
423
+ continue;
424
+ }
425
+ }
426
+ const imgRe = /!\[([^\]]*)\]\(([^)]+)\)/;
427
+ const imgMatch = text.slice(i).match(imgRe);
428
+ if (imgMatch && text.slice(i).indexOf(imgMatch[0]) === 0) {
429
+ out.push({ type: 'image', url: imgMatch[2], alt: imgMatch[1] || undefined });
430
+ i += imgMatch[0].length;
431
+ continue;
432
+ }
433
+ const linkRe = /\[([^\]]+)\]\(([^)]+)\)/;
434
+ const linkMatch = text.slice(i).match(linkRe);
435
+ if (linkMatch && !text.slice(i).startsWith('![') && text.slice(i).indexOf(linkMatch[0]) === 0) {
436
+ out.push({ type: 'link', url: linkMatch[2], children: parseInlineNoMath(linkMatch[1]) });
437
+ i += linkMatch[0].length;
438
+ continue;
439
+ }
440
+ const codeStart = text.indexOf('`', i);
441
+ if (codeStart === i) {
442
+ let end = i + 1;
443
+ while (end < len && text[end] !== '`')
444
+ end++;
445
+ if (end < len) {
446
+ out.push({ type: 'inline_code', value: text.slice(i + 1, end) });
447
+ i = end + 1;
448
+ continue;
449
+ }
450
+ }
451
+ if (text.slice(i, i + 2) === '**') {
452
+ const close = findClosingDelim(text, i + 2, '**');
453
+ if (close !== -1) {
454
+ out.push({ type: 'strong', children: parseInlineNoMath(text.slice(i + 2, close)) });
455
+ i = close + 2;
456
+ continue;
457
+ }
458
+ }
459
+ if (text[i] === '*' && text[i + 1] !== '*') {
460
+ const close = text.indexOf('*', i + 1);
461
+ if (close !== -1) {
462
+ out.push({ type: 'emphasis', children: parseInlineNoMath(text.slice(i + 1, close)) });
463
+ i = close + 1;
464
+ continue;
465
+ }
466
+ }
467
+ if (text.slice(i, i + 2) === '~~') {
468
+ const close = text.indexOf('~~', i + 2);
469
+ if (close !== -1) {
470
+ out.push({ type: 'strikethrough', children: parseInlineNoMath(text.slice(i + 2, close)) });
471
+ i = close + 2;
472
+ continue;
473
+ }
474
+ }
475
+ const nextSpecial = findNextInlineSpecial(text, i);
476
+ const end = nextSpecial === -1 ? len : nextSpecial;
477
+ if (end > i) {
478
+ out.push({ type: 'text', value: text.slice(i, end) });
479
+ i = end;
480
+ }
481
+ else {
482
+ out.push({ type: 'text', value: text[i] });
483
+ i++;
484
+ }
485
+ }
486
+ return out;
487
+ }
488
+ //# sourceMappingURL=markdownParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownParser.js","sourceRoot":"","sources":["../../src/markdown/markdownParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * AST → Markdown renderer.
3
+ */
4
+ import type { AST } from '../ast/nodes';
5
+ export declare function renderMarkdown(ast: AST): string;
6
+ //# sourceMappingURL=markdownRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownRenderer.d.ts","sourceRoot":"","sources":["../../src/markdown/markdownRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAyB,MAAM,cAAc,CAAA;AAsB9D,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE/C"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * AST → Markdown renderer.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderMarkdown = renderMarkdown;
7
+ const nodes_1 = require("../ast/nodes");
8
+ function renderMarkdown(ast) {
9
+ return ast.children.map((b) => renderBlock(b)).filter(Boolean).join('\n\n');
10
+ }
11
+ function renderBlock(node) {
12
+ if ((0, nodes_1.isHeadingNode)(node)) {
13
+ const prefix = '#'.repeat(node.level);
14
+ return `${prefix} ${renderInlineSequence(node.children)}`;
15
+ }
16
+ if ((0, nodes_1.isParagraphNode)(node)) {
17
+ return renderInlineSequence(node.children);
18
+ }
19
+ if ((0, nodes_1.isListNode)(node)) {
20
+ return node.items
21
+ .map((item, idx) => {
22
+ const bullet = node.ordered ? `${idx + 1}.` : '-';
23
+ const first = item.children[0];
24
+ const text = first && first.type === 'paragraph'
25
+ ? renderInlineSequence(first.children)
26
+ : '';
27
+ return `${bullet} ${text}`;
28
+ })
29
+ .join('\n');
30
+ }
31
+ if ((0, nodes_1.isCodeBlockNode)(node)) {
32
+ const lang = node.lang ? ` ${node.lang}` : '';
33
+ return `\`\`\`${lang}\n${node.content}\n\`\`\``;
34
+ }
35
+ if ((0, nodes_1.isMathBlockNode)(node)) {
36
+ return `$$\n${node.content}\n$$`;
37
+ }
38
+ if ((0, nodes_1.isBlockquoteNode)(node)) {
39
+ const inner = node.children.map((b) => renderBlock(b)).join('\n\n');
40
+ return inner
41
+ .split('\n')
42
+ .map((line) => `> ${line}`)
43
+ .join('\n');
44
+ }
45
+ if ((0, nodes_1.isThematicBreakNode)(node)) {
46
+ return '---';
47
+ }
48
+ if ((0, nodes_1.isTableNode)(node)) {
49
+ const header = '| ' + node.headerRow.join(' | ') + ' |';
50
+ const sep = '| ' + node.headerRow.map(() => '---').join(' | ') + ' |';
51
+ const body = node.rows.map((row) => '| ' + row.join(' | ') + ' |').join('\n');
52
+ return [header, sep, body].filter(Boolean).join('\n');
53
+ }
54
+ if ((0, nodes_1.isUnknownBlockNode)(node)) {
55
+ return node.raw;
56
+ }
57
+ return '';
58
+ }
59
+ function renderInlineSequence(nodes) {
60
+ return nodes.map(renderInline).join('');
61
+ }
62
+ function renderInline(node) {
63
+ if ((0, nodes_1.isTextNode)(node))
64
+ return node.value;
65
+ if ((0, nodes_1.isStrongNode)(node))
66
+ return `**${renderInlineSequence(node.children)}**`;
67
+ if ((0, nodes_1.isEmphasisNode)(node))
68
+ return `*${renderInlineSequence(node.children)}*`;
69
+ if ((0, nodes_1.isInlineCodeNode)(node))
70
+ return `\`${node.value}\``;
71
+ if ((0, nodes_1.isLinkNode)(node))
72
+ return `[${renderInlineSequence(node.children)}](${node.url})`;
73
+ if ((0, nodes_1.isImageNode)(node))
74
+ return `![${node.alt || ''}](${node.url})`;
75
+ if ((0, nodes_1.isMathInlineNode)(node))
76
+ return `$${node.content}$`;
77
+ if ((0, nodes_1.isStrikethroughNode)(node))
78
+ return `~~${renderInlineSequence(node.children)}~~`;
79
+ if (node.type === 'unknown_inline')
80
+ return node.raw;
81
+ return '';
82
+ }
83
+ //# sourceMappingURL=markdownRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownRenderer.js","sourceRoot":"","sources":["../../src/markdown/markdownRenderer.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAwBH,wCAEC;AAvBD,wCAmBqB;AAErB,SAAgB,cAAc,CAAC,GAAQ;IACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,IAAe;IAClC,IAAI,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,OAAO,GAAG,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;IAC3D,CAAC;IACD,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,IAAA,kBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,IAAI,GACR,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBACjC,CAAC,CAAC,oBAAoB,CAAE,KAAoC,CAAC,QAAQ,CAAC;gBACtE,CAAC,CAAC,EAAE,CAAA;YACR,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAA;QAC5B,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IACD,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,OAAO,SAAS,IAAI,KAAK,IAAI,CAAC,OAAO,UAAU,CAAA;IACjD,CAAC;IACD,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,IAAI,CAAC,OAAO,MAAM,CAAA;IAClC,CAAC;IACD,IAAI,IAAA,wBAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnE,OAAO,KAAK;aACT,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IACD,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;QACvD,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7E,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IACD,IAAI,IAAA,0BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAmB;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,IAAI,IAAA,kBAAU,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAA;IACvC,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC;QAAE,OAAO,KAAK,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA;IAC3E,IAAI,IAAA,sBAAc,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;IAC3E,IAAI,IAAA,wBAAgB,EAAC,IAAI,CAAC;QAAE,OAAO,KAAK,IAAI,CAAC,KAAK,IAAI,CAAA;IACtD,IAAI,IAAA,kBAAU,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAA;IACpF,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC;QAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAA;IACjE,IAAI,IAAA,wBAAgB,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAA;IACtD,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC;QAAE,OAAO,KAAK,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA;IAClF,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC,GAAG,CAAA;IACnD,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * AST normalization for round-trip comparison.
3
+ * - Merges adjacent text nodes in inline sequences
4
+ * - Trims whitespace in text nodes
5
+ * - Normalizes empty paragraphs/lists for consistent comparison
6
+ */
7
+ import type { AST } from '../ast/nodes';
8
+ export declare function normalizeAST(ast: AST): AST;
9
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/transform/normalize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAyB,MAAM,cAAc,CAAA;AAU9D,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAK1C"}