@markitdownjs/ast 0.1.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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=renderers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/renderers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { MarkdownRenderer } from '../markdown-renderer.js';
3
+ import { HtmlRenderer } from '../html-renderer.js';
4
+ import { PlainTextRenderer } from '../plaintext-renderer.js';
5
+ import { JsonRenderer } from '../json-renderer.js';
6
+ import { createNode } from '@markitdownjs/shared';
7
+ const testAst = createNode({
8
+ type: 'document',
9
+ children: [
10
+ createNode({
11
+ type: 'heading',
12
+ level: 1,
13
+ children: [createNode({ type: 'text', value: 'Hello World' })],
14
+ }),
15
+ createNode({
16
+ type: 'paragraph',
17
+ children: [createNode({ type: 'text', value: 'This is a test document.' })],
18
+ }),
19
+ ],
20
+ });
21
+ describe('MarkdownRenderer', () => {
22
+ it('should render AST to markdown', () => {
23
+ const renderer = new MarkdownRenderer();
24
+ const md = renderer.render(testAst);
25
+ expect(md).toContain('# Hello World');
26
+ expect(md).toContain('This is a test document.');
27
+ });
28
+ });
29
+ describe('HtmlRenderer', () => {
30
+ it('should render AST to HTML', () => {
31
+ const renderer = new HtmlRenderer();
32
+ const html = renderer.render(testAst);
33
+ expect(html).toContain('<h1>Hello World</h1>');
34
+ expect(html).toContain('<p>This is a test document.</p>');
35
+ });
36
+ });
37
+ describe('PlainTextRenderer', () => {
38
+ it('should render AST to plain text', () => {
39
+ const renderer = new PlainTextRenderer();
40
+ const text = renderer.render(testAst);
41
+ expect(text).toContain('Hello World');
42
+ expect(text).toContain('This is a test document.');
43
+ expect(text).not.toContain('#');
44
+ });
45
+ });
46
+ describe('JsonRenderer', () => {
47
+ it('should render AST to JSON', () => {
48
+ const renderer = new JsonRenderer();
49
+ const json = renderer.render(testAst);
50
+ const parsed = JSON.parse(json);
51
+ expect(parsed.type).toBe('document');
52
+ });
53
+ });
54
+ //# sourceMappingURL=renderers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.test.js","sourceRoot":"","sources":["../../src/__tests__/renderers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { AnyNode, DocumentNode, HeadingInfo } from '@markitdownjs/shared';
2
+ export type { HeadingInfo } from '@markitdownjs/shared';
3
+ export declare function extractText(node: AnyNode): string;
4
+ export declare function extractHeadings(node: AnyNode): HeadingInfo[];
5
+ export declare function countTokens(node: AnyNode): number;
6
+ export declare function findNodeById(node: AnyNode, id: string): AnyNode | null;
7
+ export declare function getDepth(node: AnyNode): number;
8
+ export declare function flattenChildren(node: AnyNode): AnyNode[];
9
+ export declare function mergeDocuments(...nodes: DocumentNode[]): DocumentNode;
10
+ //# sourceMappingURL=ast-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.d.ts","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,WAAW,EAKZ,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CAO5D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAUtE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAY9C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,CAMxD;AAED,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAWrE"}
@@ -0,0 +1,61 @@
1
+ import { walkAst, getNodeText, findNodesOfType, countTokens as sharedCountTokens, } from '@markitdownjs/shared';
2
+ export function extractText(node) {
3
+ return getNodeText(node);
4
+ }
5
+ export function extractHeadings(node) {
6
+ const headings = findNodesOfType(node, 'heading');
7
+ return headings.map((h) => ({
8
+ level: h.level,
9
+ text: getNodeText(h),
10
+ id: h.id,
11
+ }));
12
+ }
13
+ export function countTokens(node) {
14
+ return sharedCountTokens(node);
15
+ }
16
+ export function findNodeById(node, id) {
17
+ let found = null;
18
+ walkAst(node, (n) => {
19
+ if ('id' in n && n.id === id) {
20
+ found = n;
21
+ return false;
22
+ }
23
+ return undefined;
24
+ });
25
+ return found;
26
+ }
27
+ export function getDepth(node) {
28
+ let maxDepth = 0;
29
+ const visit = (n, depth) => {
30
+ if (depth > maxDepth)
31
+ maxDepth = depth;
32
+ if ('children' in n && Array.isArray(n.children)) {
33
+ for (const child of n.children) {
34
+ visit(child, depth + 1);
35
+ }
36
+ }
37
+ };
38
+ visit(node, 0);
39
+ return maxDepth;
40
+ }
41
+ export function flattenChildren(node) {
42
+ const result = [];
43
+ walkAst(node, (n) => {
44
+ if (n !== node)
45
+ result.push(n);
46
+ });
47
+ return result;
48
+ }
49
+ export function mergeDocuments(...nodes) {
50
+ const children = [];
51
+ for (const doc of nodes) {
52
+ if (doc.children) {
53
+ children.push(...doc.children);
54
+ }
55
+ }
56
+ return {
57
+ type: 'document',
58
+ children,
59
+ };
60
+ }
61
+ //# sourceMappingURL=ast-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../src/ast-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,OAAO,EACP,WAAW,EACX,eAAe,EACf,WAAW,IAAI,iBAAiB,GACjC,MAAM,sBAAsB,CAAC;AAI9B,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,QAAQ,GAAG,eAAe,CAAc,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,EAAE;KACT,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,EAAU;IACpD,IAAI,KAAK,GAAmB,IAAI,CAAC;IACjC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;QAClB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7B,KAAK,GAAG,CAAC,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,QAAQ;YAAE,QAAQ,GAAG,KAAK,CAAC;QACvC,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/B,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACf,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,KAAK,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,KAAqB;IACrD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { AnyNode } from '@markitdownjs/shared';
2
+ export declare class HtmlRenderer {
3
+ render(node: AnyNode): string;
4
+ private renderTable;
5
+ }
6
+ //# sourceMappingURL=html-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../src/html-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAuBR,MAAM,sBAAsB,CAAC;AAW9B,qBAAa,YAAY;IACvB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IA4H7B,OAAO,CAAC,WAAW;CAgCpB"}
@@ -0,0 +1,166 @@
1
+ import { getNodeText, } from '@markitdownjs/shared';
2
+ function escapeHtml(text) {
3
+ return text
4
+ .replace(/&/g, '&amp;')
5
+ .replace(/</g, '&lt;')
6
+ .replace(/>/g, '&gt;')
7
+ .replace(/"/g, '&quot;')
8
+ .replace(/'/g, '&#39;');
9
+ }
10
+ export class HtmlRenderer {
11
+ render(node) {
12
+ switch (node.type) {
13
+ case 'document': {
14
+ const children = node.children ?? [];
15
+ return '<div>' + children.map((c) => this.render(c)).join('\n') + '</div>';
16
+ }
17
+ case 'heading': {
18
+ const heading = node;
19
+ const tag = `h${heading.level}`;
20
+ const id = heading.id ? ` id="${heading.id}"` : '';
21
+ const children = heading.children.map((c) => this.render(c)).join('');
22
+ return `<${tag}${id}>${children}</${tag}>`;
23
+ }
24
+ case 'paragraph': {
25
+ const paragraph = node;
26
+ const children = paragraph.children.map((c) => this.render(c)).join('');
27
+ return `<p>${children}</p>`;
28
+ }
29
+ case 'text': {
30
+ return escapeHtml(node.value);
31
+ }
32
+ case 'emphasis': {
33
+ const emphasis = node;
34
+ const children = emphasis.children.map((c) => this.render(c)).join('');
35
+ return `<em>${children}</em>`;
36
+ }
37
+ case 'strong': {
38
+ const strong = node;
39
+ const children = strong.children.map((c) => this.render(c)).join('');
40
+ return `<strong>${children}</strong>`;
41
+ }
42
+ case 'inline-code': {
43
+ return `<code>${escapeHtml(node.value)}</code>`;
44
+ }
45
+ case 'code': {
46
+ const code = node;
47
+ const lang = code.language ? ` class="language-${code.language}"` : '';
48
+ return `<pre><code${lang}>${escapeHtml(code.value)}</code></pre>`;
49
+ }
50
+ case 'link': {
51
+ const link = node;
52
+ const children = link.children.map((c) => this.render(c)).join('');
53
+ const title = link.title ? ` title="${escapeHtml(link.title)}"` : '';
54
+ return `<a href="${escapeHtml(link.href)}"${title}>${children}</a>`;
55
+ }
56
+ case 'image': {
57
+ const image = node;
58
+ const alt = image.alt ? ` alt="${escapeHtml(image.alt)}"` : '';
59
+ const title = image.title ? ` title="${escapeHtml(image.title)}"` : '';
60
+ return `<img src="${escapeHtml(image.src)}"${alt}${title} />`;
61
+ }
62
+ case 'list': {
63
+ const list = node;
64
+ const tag = list.ordered ? 'ol' : 'ul';
65
+ const children = list.children.map((c) => this.render(c)).join('\n');
66
+ return `<${tag}>\n${children}\n</${tag}>`;
67
+ }
68
+ case 'list-item': {
69
+ const listItem = node;
70
+ const children = listItem.children.map((c) => this.render(c)).join('');
71
+ return `<li>${children}</li>`;
72
+ }
73
+ case 'table': {
74
+ return this.renderTable(node);
75
+ }
76
+ case 'table-row': {
77
+ const row = node;
78
+ const tag = row.isHeader ? 'th' : 'td';
79
+ const cells = row.children.map((c) => {
80
+ const content = c.children.map((cc) => this.render(cc)).join('');
81
+ return `<${tag}>${content}</${tag}>`;
82
+ });
83
+ return `<tr>\n${cells.join('\n')}\n</tr>`;
84
+ }
85
+ case 'table-cell': {
86
+ const cell = node;
87
+ return cell.children.map((c) => this.render(c)).join('');
88
+ }
89
+ case 'blockquote': {
90
+ const blockquote = node;
91
+ const children = blockquote.children.map((c) => this.render(c)).join('\n');
92
+ return `<blockquote>\n${children}\n</blockquote>`;
93
+ }
94
+ case 'thematic-break':
95
+ case 'horizontal-rule':
96
+ return '<hr />';
97
+ case 'html': {
98
+ return node.value;
99
+ }
100
+ case 'footnote': {
101
+ const footnote = node;
102
+ const id = footnote.identifier;
103
+ return `<sup><a href="#fn-${id}">${id}</a></sup>`;
104
+ }
105
+ case 'page-break':
106
+ return '<div class="page-break"></div>';
107
+ case 'section': {
108
+ const section = node;
109
+ const children = section.children.map((c) => this.render(c)).join('\n');
110
+ return `<section>\n${children}\n</section>`;
111
+ }
112
+ case 'strikethrough': {
113
+ const strikethrough = node;
114
+ const children = strikethrough.children.map((c) => this.render(c)).join('');
115
+ return `<del>${children}</del>`;
116
+ }
117
+ case 'math': {
118
+ const math = node;
119
+ return `<span class="math">${escapeHtml(math.value)}</span>`;
120
+ }
121
+ case 'raw': {
122
+ return node.value;
123
+ }
124
+ case 'definition':
125
+ case 'quote':
126
+ case 'subscript':
127
+ case 'superscript': {
128
+ return escapeHtml(getNodeText(node));
129
+ }
130
+ default:
131
+ return '';
132
+ }
133
+ }
134
+ renderTable(table) {
135
+ const rows = table.children;
136
+ if (rows.length === 0)
137
+ return '';
138
+ let hasHeader = false;
139
+ const bodyRows = [];
140
+ for (const row of rows) {
141
+ if (row.isHeader) {
142
+ hasHeader = true;
143
+ }
144
+ else {
145
+ bodyRows.push(row);
146
+ }
147
+ }
148
+ const renderRow = (row) => {
149
+ return '<tr>\n' + row.children.map((c) => this.render(c)).join('\n') + '\n</tr>';
150
+ };
151
+ let html = '<table>\n';
152
+ if (hasHeader) {
153
+ const headerRow = rows.find((r) => r.isHeader);
154
+ if (headerRow) {
155
+ html += '<thead>\n' + renderRow(headerRow) + '\n</thead>\n';
156
+ }
157
+ }
158
+ html += '<tbody>\n';
159
+ for (const row of bodyRows) {
160
+ html += renderRow(row) + '\n';
161
+ }
162
+ html += '</tbody>\n</table>';
163
+ return html;
164
+ }
165
+ }
166
+ //# sourceMappingURL=html-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../src/html-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { MarkdownRenderer } from './markdown-renderer.js';
2
+ export { HtmlRenderer } from './html-renderer.js';
3
+ export { PlainTextRenderer } from './plaintext-renderer.js';
4
+ export { JsonRenderer } from './json-renderer.js';
5
+ export * from './ast-utils.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,cAAc,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { MarkdownRenderer } from './markdown-renderer.js';
2
+ export { HtmlRenderer } from './html-renderer.js';
3
+ export { PlainTextRenderer } from './plaintext-renderer.js';
4
+ export { JsonRenderer } from './json-renderer.js';
5
+ export * from './ast-utils.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { AnyNode } from '@markitdownjs/shared';
2
+ export declare class JsonRenderer {
3
+ render(node: AnyNode): string;
4
+ }
5
+ //# sourceMappingURL=json-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-renderer.d.ts","sourceRoot":"","sources":["../src/json-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,qBAAa,YAAY;IACvB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;CAG9B"}
@@ -0,0 +1,6 @@
1
+ export class JsonRenderer {
2
+ render(node) {
3
+ return JSON.stringify(node, null, 2);
4
+ }
5
+ }
6
+ //# sourceMappingURL=json-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-renderer.js","sourceRoot":"","sources":["../src/json-renderer.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,IAAa;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { AnyNode } from '@markitdownjs/shared';
2
+ export declare class MarkdownRenderer {
3
+ render(node: AnyNode): string;
4
+ private renderTable;
5
+ }
6
+ //# sourceMappingURL=markdown-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.d.ts","sourceRoot":"","sources":["../src/markdown-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAuBR,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IA8H7B,OAAO,CAAC,WAAW;CAkCpB"}
@@ -0,0 +1,161 @@
1
+ import { getNodeText, } from '@markitdownjs/shared';
2
+ export class MarkdownRenderer {
3
+ render(node) {
4
+ switch (node.type) {
5
+ case 'document': {
6
+ const children = node.children ?? [];
7
+ return children.map((child) => this.render(child)).join('\n\n');
8
+ }
9
+ case 'heading': {
10
+ const heading = node;
11
+ const prefix = '#'.repeat(heading.level);
12
+ const children = heading.children.map((c) => this.render(c)).join('');
13
+ return `${prefix} ${children}`;
14
+ }
15
+ case 'paragraph': {
16
+ const paragraph = node;
17
+ return paragraph.children.map((c) => this.render(c)).join('');
18
+ }
19
+ case 'text': {
20
+ return node.value;
21
+ }
22
+ case 'emphasis': {
23
+ const emphasis = node;
24
+ const children = emphasis.children.map((c) => this.render(c)).join('');
25
+ return `*${children}*`;
26
+ }
27
+ case 'strong': {
28
+ const strong = node;
29
+ const children = strong.children.map((c) => this.render(c)).join('');
30
+ return `**${children}**`;
31
+ }
32
+ case 'inline-code': {
33
+ return `\`${node.value}\``;
34
+ }
35
+ case 'code': {
36
+ const code = node;
37
+ const lang = code.language ?? '';
38
+ return `\`\`\`${lang}\n${code.value}\n\`\`\``;
39
+ }
40
+ case 'link': {
41
+ const link = node;
42
+ const children = link.children.map((c) => this.render(c)).join('');
43
+ const title = link.title ? ` "${link.title}"` : '';
44
+ return `[${children}](${link.href}${title})`;
45
+ }
46
+ case 'image': {
47
+ const image = node;
48
+ const alt = image.alt ?? '';
49
+ const title = image.title ? ` "${image.title}"` : '';
50
+ return `![${alt}](${image.src}${title})`;
51
+ }
52
+ case 'list': {
53
+ const list = node;
54
+ return list.children
55
+ .map((item, index) => {
56
+ const prefix = list.ordered ? `${(list.start ?? 1) + index}. ` : '- ';
57
+ const content = item.children.map((c) => this.render(c)).join('');
58
+ return `${prefix}${content}`;
59
+ })
60
+ .join('\n');
61
+ }
62
+ case 'list-item': {
63
+ const listItem = node;
64
+ return listItem.children.map((c) => this.render(c)).join('');
65
+ }
66
+ case 'table': {
67
+ return this.renderTable(node);
68
+ }
69
+ case 'table-row': {
70
+ const row = node;
71
+ return '| ' + row.children.map((c) => this.render(c)).join(' | ') + ' |';
72
+ }
73
+ case 'table-cell': {
74
+ const cell = node;
75
+ return cell.children.map((c) => this.render(c)).join('');
76
+ }
77
+ case 'blockquote': {
78
+ const blockquote = node;
79
+ const children = blockquote.children.map((c) => this.render(c)).join('\n');
80
+ return children
81
+ .split('\n')
82
+ .map((line) => `> ${line}`)
83
+ .join('\n');
84
+ }
85
+ case 'thematic-break':
86
+ case 'horizontal-rule':
87
+ return '---';
88
+ case 'html': {
89
+ return node.value;
90
+ }
91
+ case 'footnote': {
92
+ const footnote = node;
93
+ const children = footnote.children.map((c) => this.render(c)).join('');
94
+ return `[^${footnote.identifier}]: ${children}`;
95
+ }
96
+ case 'page-break':
97
+ return '\n---\n';
98
+ case 'section': {
99
+ const section = node;
100
+ const children = section.children.map((c) => this.render(c)).join('\n\n');
101
+ return children;
102
+ }
103
+ case 'strikethrough': {
104
+ const strikethrough = node;
105
+ const children = strikethrough.children.map((c) => this.render(c)).join('');
106
+ return `~~${children}~~`;
107
+ }
108
+ case 'math': {
109
+ const math = node;
110
+ if (math.inline) {
111
+ return `$${math.value}$`;
112
+ }
113
+ return `$$\n${math.value}\n$$`;
114
+ }
115
+ case 'raw': {
116
+ return node.value;
117
+ }
118
+ case 'definition':
119
+ case 'quote':
120
+ case 'subscript':
121
+ case 'superscript': {
122
+ return getNodeText(node);
123
+ }
124
+ default:
125
+ return '';
126
+ }
127
+ }
128
+ renderTable(table) {
129
+ const rows = table.children;
130
+ if (rows.length === 0)
131
+ return '';
132
+ const columnCount = Math.max(...rows.map((r) => r.children.length));
133
+ const widths = Array.from({ length: columnCount }, () => 0);
134
+ for (const row of rows) {
135
+ for (let i = 0; i < columnCount; i++) {
136
+ const cell = row.children[i];
137
+ if (cell) {
138
+ const text = getNodeText(cell);
139
+ widths[i] = Math.max(widths[i] ?? 0, text.length);
140
+ }
141
+ }
142
+ }
143
+ const lines = [];
144
+ for (let ri = 0; ri < rows.length; ri++) {
145
+ const row = rows[ri];
146
+ const cells = [];
147
+ for (let ci = 0; ci < columnCount; ci++) {
148
+ const cell = row.children[ci];
149
+ const text = cell ? getNodeText(cell) : '';
150
+ const width = widths[ci] ?? 0;
151
+ cells.push(text.padEnd(width));
152
+ }
153
+ lines.push('| ' + cells.join(' | ') + ' |');
154
+ if (row.isHeader) {
155
+ lines.push('| ' + widths.map((w) => '-'.repeat(w)).join(' | ') + ' |');
156
+ }
157
+ }
158
+ return lines.join('\n');
159
+ }
160
+ }
161
+ //# sourceMappingURL=markdown-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../src/markdown-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAuBL,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,IAAa;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClE,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG,IAAmB,CAAC;gBACpC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtE,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;YACjC,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAqB,CAAC;gBACxC,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAQ,IAAiB,CAAC,KAAK,CAAC;YAClC,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,IAAoB,CAAC;gBACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,OAAO,IAAI,QAAQ,GAAG,CAAC;YACzB,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,IAAkB,CAAC;gBAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrE,OAAO,KAAK,QAAQ,IAAI,CAAC;YAC3B,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,OAAO,KAAM,IAAuB,CAAC,KAAK,IAAI,CAAC;YACjD,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAgB,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACjC,OAAO,SAAS,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC;YAChD,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAgB,CAAC;gBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC;YAC/C,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,IAAiB,CAAC;gBAChC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC;YAC3C,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAgB,CAAC;gBAC9B,OAAO,IAAI,CAAC,QAAQ;qBACjB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClE,OAAO,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC;gBAC/B,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAoB,CAAC;gBACtC,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,OAAO,IAAI,CAAC,WAAW,CAAC,IAAiB,CAAC,CAAC;YAC7C,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAoB,CAAC;gBACjC,OAAO,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC3E,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,IAAI,GAAG,IAAqB,CAAC;gBACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,UAAU,GAAG,IAAsB,CAAC;gBAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3E,OAAO,QAAQ;qBACZ,KAAK,CAAC,IAAI,CAAC;qBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;qBAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YACD,KAAK,gBAAgB,CAAC;YACtB,KAAK,iBAAiB;gBACpB,OAAO,KAAK,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAQ,IAAiB,CAAC,KAAK,CAAC;YAClC,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,IAAoB,CAAC;gBACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,OAAO,KAAK,QAAQ,CAAC,UAAU,MAAM,QAAQ,EAAE,CAAC;YAClD,CAAC;YACD,KAAK,YAAY;gBACf,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG,IAAmB,CAAC;gBACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,aAAa,GAAG,IAAyB,CAAC;gBAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5E,OAAO,KAAK,QAAQ,IAAI,CAAC;YAC3B,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAgB,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;gBAC3B,CAAC;gBACD,OAAO,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC;YACjC,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,OAAQ,IAAgB,CAAC,KAAK,CAAC;YACjC,CAAC;YACD,KAAK,YAAY,CAAC;YAClB,KAAK,OAAO,CAAC;YACb,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAgB;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;YACtB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { AnyNode } from '@markitdownjs/shared';
2
+ export declare class PlainTextRenderer {
3
+ render(node: AnyNode): string;
4
+ private renderTable;
5
+ }
6
+ //# sourceMappingURL=plaintext-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext-renderer.d.ts","sourceRoot":"","sources":["../src/plaintext-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAuBR,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IA+G7B,OAAO,CAAC,WAAW;CAgBpB"}
@@ -0,0 +1,130 @@
1
+ import { getNodeText, } from '@markitdownjs/shared';
2
+ export class PlainTextRenderer {
3
+ render(node) {
4
+ switch (node.type) {
5
+ case 'document': {
6
+ const children = node.children ?? [];
7
+ return children.map((c) => this.render(c)).join('\n\n');
8
+ }
9
+ case 'heading': {
10
+ const heading = node;
11
+ return heading.children.map((c) => this.render(c)).join('');
12
+ }
13
+ case 'paragraph': {
14
+ const paragraph = node;
15
+ return paragraph.children.map((c) => this.render(c)).join('');
16
+ }
17
+ case 'text': {
18
+ return node.value;
19
+ }
20
+ case 'emphasis': {
21
+ const emphasis = node;
22
+ return emphasis.children.map((c) => this.render(c)).join('');
23
+ }
24
+ case 'strong': {
25
+ const strong = node;
26
+ return strong.children.map((c) => this.render(c)).join('');
27
+ }
28
+ case 'inline-code': {
29
+ return node.value;
30
+ }
31
+ case 'code': {
32
+ const code = node;
33
+ return code.value;
34
+ }
35
+ case 'link': {
36
+ const link = node;
37
+ return link.children.map((c) => this.render(c)).join('');
38
+ }
39
+ case 'image': {
40
+ const image = node;
41
+ return image.alt ?? '';
42
+ }
43
+ case 'list': {
44
+ const list = node;
45
+ return list.children
46
+ .map((item, index) => {
47
+ const prefix = list.ordered ? `${(list.start ?? 1) + index}. ` : '- ';
48
+ const content = item.children.map((c) => this.render(c)).join('');
49
+ return `${prefix}${content}`;
50
+ })
51
+ .join('\n');
52
+ }
53
+ case 'list-item': {
54
+ const listItem = node;
55
+ return listItem.children.map((c) => this.render(c)).join('');
56
+ }
57
+ case 'table': {
58
+ return this.renderTable(node);
59
+ }
60
+ case 'table-row': {
61
+ const row = node;
62
+ return row.children.map((c) => this.render(c)).join('\t');
63
+ }
64
+ case 'table-cell': {
65
+ const cell = node;
66
+ return cell.children.map((c) => this.render(c)).join('');
67
+ }
68
+ case 'blockquote': {
69
+ const blockquote = node;
70
+ const children = blockquote.children.map((c) => this.render(c)).join('\n');
71
+ return children
72
+ .split('\n')
73
+ .map((line) => `> ${line}`)
74
+ .join('\n');
75
+ }
76
+ case 'thematic-break':
77
+ case 'horizontal-rule':
78
+ return '---';
79
+ case 'html': {
80
+ return node.value;
81
+ }
82
+ case 'footnote': {
83
+ const footnote = node;
84
+ const children = footnote.children.map((c) => this.render(c)).join('');
85
+ return `[${footnote.identifier}]: ${children}`;
86
+ }
87
+ case 'page-break':
88
+ return '\n---\n';
89
+ case 'section': {
90
+ const section = node;
91
+ return section.children.map((c) => this.render(c)).join('\n\n');
92
+ }
93
+ case 'strikethrough': {
94
+ const strikethrough = node;
95
+ return strikethrough.children.map((c) => this.render(c)).join('');
96
+ }
97
+ case 'math': {
98
+ return node.value;
99
+ }
100
+ case 'raw': {
101
+ return node.value;
102
+ }
103
+ case 'definition':
104
+ case 'quote':
105
+ case 'subscript':
106
+ case 'superscript': {
107
+ return getNodeText(node);
108
+ }
109
+ default:
110
+ return '';
111
+ }
112
+ }
113
+ renderTable(table) {
114
+ const rows = table.children;
115
+ if (rows.length === 0)
116
+ return '';
117
+ const columnCount = Math.max(...rows.map((r) => r.children.length));
118
+ return rows
119
+ .map((row) => {
120
+ const cells = [];
121
+ for (let i = 0; i < columnCount; i++) {
122
+ const cell = row.children[i];
123
+ cells.push(cell ? this.render(cell) : '');
124
+ }
125
+ return cells.join('\t');
126
+ })
127
+ .join('\n');
128
+ }
129
+ }
130
+ //# sourceMappingURL=plaintext-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaintext-renderer.js","sourceRoot":"","sources":["../src/plaintext-renderer.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@markitdownjs/ast",
3
+ "version": "0.1.0",
4
+ "description": "Unified AST types and renderers for MarkItDownJS",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "@markitdownjs/shared": "0.1.0"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "^5.5.0"
24
+ },
25
+ "scripts": {
26
+ "build": "tsc --project tsconfig.json",
27
+ "dev": "tsc --watch --project tsconfig.json",
28
+ "typecheck": "tsc --noEmit",
29
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
30
+ }
31
+ }