Skip to content

Commit dcc4291

Browse files
committed
refactor!: clarify parser and renderer API names
Created by Codex, an AI agent. This commit has not been human-reviewed.
1 parent fa7916e commit dcc4291

30 files changed

Lines changed: 262 additions & 210 deletions

File tree

benchmarks/comark-render.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import MarkdownIt from 'markdown-it'
33
import MarkdownExit from 'markdown-exit'
44
import { markdownItComark } from 'comark/plugins/syntax'
55
import { createMarkdownParser } from 'comark'
6-
import { renderHTML } from '../packages/comark-html/src/index.ts'
6+
import { renderHtml } from '../packages/comark-html/src/index.ts'
77

88
// Sample markdown content to test with
99
const sampleMarkdown = `---
@@ -88,20 +88,20 @@ barplot(() => {
8888
markdownExit.render(sampleMarkdown)
8989
})
9090

91-
// Benchmark: comark parse + renderHTML
92-
bench('comark parse + renderHTML', async () => {
91+
// Benchmark: comark parse + renderHtml
92+
bench('comark parse + renderHtml', async () => {
9393
const tree = await comark(sampleMarkdown)
94-
renderHTML(tree)
94+
renderHtml(tree)
9595
})
9696

9797
bench('comark parse no close', async () => {
9898
const tree = await comarkNoClose(sampleMarkdown)
99-
renderHTML(tree)
99+
renderHtml(tree)
100100
})
101101

102102
bench('comark parse streaming', async () => {
103103
const tree = await comarkStreaming(sampleMarkdown, { streaming: true })
104-
renderHTML(tree)
104+
renderHtml(tree)
105105
})
106106
})
107107
})

benchmarks/plugin-highlight.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const medium = `
3131
\`\`\`typescript
3232
import { parseMarkdown } from 'comark'
3333
34-
interface ParseOptions {
34+
interface ParserOptions {
3535
autoClose?: boolean
3636
streaming?: boolean
3737
plugins?: ComarkPlugin[]

benchmarks/plugin-punctuation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { bench, run, group, barplot } from 'mitata'
22
import MarkdownExit from 'markdown-exit'
33
import { markdownItComark } from 'comark/plugins/syntax'
44
import { createMarkdownParser } from 'comark'
5-
import { log } from '@comark/ansi'
5+
import { writeAnsi } from '@comark/ansi'
66
import punctuation from '../packages/comark/src/plugins/punctuation'
77

88
// ── Test content (exercises ALL features: quotes, dashes, ellipsis, symbols, normalization) ──
@@ -143,7 +143,7 @@ console.log('comark punctuation: ', JSON.stringify(flattenText(comarkTree.no
143143
console.log('\n🏃 Running benchmarks...\n')
144144
await run()
145145

146-
await log(`> [!NOTE]
146+
await writeAnsi(`> [!NOTE]
147147
> The goal of this benchmark is to compare the additional time each parser takes when
148148
> using punctuation plugins.
149149
>

docs/app/composables/useMDC.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { MarkdownDocument, ParseOptions } from 'comark'
1+
import type { MarkdownDocument, ParserOptions } from 'comark'
22
import { readonly, ref, shallowRef } from 'vue'
33
import { parseMarkdown } from 'comark'
44

@@ -8,7 +8,7 @@ export interface MDCState {
88
error?: Error
99
}
1010

11-
export interface MDCOptions extends ParseOptions {
11+
export interface MDCOptions extends ParserOptions {
1212
onComplete?: (result: MarkdownDocument) => void
1313
onError?: (error: Error) => void
1414
}

docs/app/composables/useMDCStream.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { MarkdownDocument, ParseOptions } from 'comark'
1+
import type { MarkdownDocument, ParserOptions } from 'comark'
22
import { readonly, ref, shallowRef } from 'vue'
33
import { parseMarkdown } from 'comark'
44
import highlight from 'comark/plugins/highlight'
@@ -10,7 +10,7 @@ export interface MDCStreamState {
1010
error?: Error
1111
}
1212

13-
export interface MDCStreamOptions extends ParseOptions {
13+
export interface MDCStreamOptions extends ParserOptions {
1414
onChunk?: (chunk: string) => void
1515
onComplete?: (result: MarkdownDocument) => void
1616
onError?: (error: Error) => void

packages/comark-angular/src/components/markdown.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
Type,
99
} from '@angular/core'
1010
import { createSerializedMarkdownParser } from 'comark'
11-
import type { ParseOptions, MarkdownDocument as MarkdownDocumentType } from 'comark'
11+
import type { ParserOptions, MarkdownDocument as MarkdownDocumentType } from 'comark'
1212
import { isMarkdownDocument } from 'comark/utils'
1313
import { MarkdownDocument } from './markdown-document.component.ts'
1414
import { warnDeprecated } from '../internal/deprecation.ts'
@@ -50,10 +50,10 @@ export class Markdown implements OnChanges {
5050
@Input() markdown?: string
5151

5252
/** Parser options (excluding plugins) */
53-
@Input() options: Exclude<ParseOptions, 'plugins'> = {}
53+
@Input() options: Exclude<ParserOptions, 'plugins'> = {}
5454

5555
/** Additional plugins to use */
56-
@Input() plugins: ParseOptions['plugins'] = []
56+
@Input() plugins: ParserOptions['plugins'] = []
5757

5858
/**
5959
* Strip wrapper tags from the top level of the tree — shorthand for

packages/comark-angular/src/define.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Component, Input, ChangeDetectionStrategy, Type } from '@angular/core'
2-
import type { ParseOptions } from 'comark'
2+
import type { ParserOptions } from 'comark'
33
import { Markdown } from './components/markdown.component.ts'
44
import { MarkdownDocument } from './components/markdown-document.component.ts'
55
import { warnDeprecated } from './internal/deprecation.ts'
66

7-
export interface DefineMarkdownComponentOptions extends ParseOptions {
7+
export interface DefineMarkdownComponentOptions extends ParserOptions {
88
/** Display name for debugging (used as Angular selector). */
99
name?: string
1010
/** Pre-configured component mappings. */

packages/comark-ansi/src/index.ts

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { ParseOptions, RenderOptions } from 'comark'
1+
import type { ParserOptions } from 'comark'
22
import { createMarkdownParser } from 'comark'
3-
import { renderANSI } from './render.ts'
3+
import { type AnsiRendererOptions, renderAnsiFromDocument } from './render.ts'
44

5-
export { renderANSI, type RenderANSIOptions } from './render.ts'
5+
export { renderAnsiFromDocument, type AnsiRendererOptions } from './render.ts'
66

7-
function defaultWrite(string: string) {
7+
function defaultWriter(string: string) {
88
if (typeof process !== 'undefined') {
99
process.stdout.write(string)
1010
} else {
@@ -13,99 +13,101 @@ function defaultWrite(string: string) {
1313
}
1414

1515
/**
16-
* Options for creating a log function.
16+
* Options for creating an ANSI writer.
1717
*/
18-
export interface LogOptions extends RenderOptions, ParseOptions {
19-
write?: (string: string) => void
18+
export interface AnsiWriterOptions extends AnsiRendererOptions, ParserOptions {
19+
writer?: (string: string) => void
2020
}
2121

2222
/**
23-
* Creates a reusable log function with pre-configured parse and render options.
23+
* Creates a reusable writer with pre-configured parse and render options.
2424
*
2525
* @param options - Comark parse and render options (plugins, autoClose, etc.)
2626
* @returns An async function `(markdown) => Promise<void>` that prints to stdout
2727
*
2828
* @example
2929
* ```typescript
30-
* import { createLog } from '@comark/ansi'
31-
* import math from 'comark/plugins/math'
30+
* import { createAnsiWriter } from '@comark/ansi'
31+
* import math, { Math } from '@comark/ansi/plugins/math'
3232
*
33-
* const log = createLog({
33+
* const writeAnsi = createAnsiWriter({
3434
* plugins: [math()],
35+
* components: { Math },
3536
* width: 120,
36-
* write: (s) => process.stderr.write(s)
37+
* writer: (s) => process.stderr.write(s)
3738
* })
3839
*
39-
* await log('# Hello\n\nThis is **bold**.')
40+
* await writeAnsi('# Hello\n\nThis is **bold**.')
4041
* ```
4142
*/
42-
export function createLog(options?: LogOptions): (markdown: string) => Promise<void> {
43-
const parse = createMarkdownParser(options as ParseOptions)
43+
export function createAnsiWriter(options?: AnsiWriterOptions): (markdown: string) => Promise<void> {
44+
const renderAnsi = createAnsiRenderer(options as AnsiRendererOptions)
45+
const write = options?.writer ?? defaultWriter
4446
return async (markdown: string) => {
45-
const tree = await parse(markdown)
46-
const write = options?.write ?? defaultWrite
47-
48-
write((await renderANSI(tree, options as RenderOptions)) + '\n')
47+
const output = await renderAnsi(markdown)
48+
write(output + '\n')
4949
}
5050
}
5151

5252
/**
5353
* Parse markdown and print it as ANSI-styled output to stdout.
5454
*
55-
* @param markdown - The markdown/Comark content to parse and print
56-
* @param options - Optional rendering options
55+
* @param markdown - The markdown content to parse and print
56+
* @param options - Optional markdown parser, ANSI renderer, and writer options
5757
*
5858
* @example
5959
* ```typescript
60-
* import { log } from '@comark/ansi'
60+
* import { writeAnsi } from '@comark/ansi'
6161
*
62-
* await log('# Hello\n\nThis is **bold** and _italic_.')
62+
* await writeAnsi('# Hello\n\nThis is **bold** and _italic_.')
6363
* ```
6464
*/
65-
export async function log(markdown: string, options?: LogOptions): Promise<void> {
66-
return createLog(options)(markdown)
65+
export async function writeAnsi(markdown: string, options?: AnsiWriterOptions): Promise<void> {
66+
return createAnsiWriter(options)(markdown)
6767
}
6868

6969
/**
7070
* Creates a reusable render function with pre-configured parse and render options.
7171
*
72-
* @param options - Comark parse and render options (plugins, autoClose, etc.)
72+
* @param options - Markdown parser and ANSI renderer options (plugins, autoClose, etc.)
7373
* @returns An async function `(markdown) => Promise<string>` that returns ANSI-styled output
7474
*
7575
* @example
7676
* ```typescript
77-
* import { createRender } from '@comark/ansi'
77+
* import { createAnsiRenderer } from '@comark/ansi'
7878
*
79-
* const render = createRender({
79+
* const renderAnsi = createAnsiRenderer({
8080
* plugins: [math()]
8181
* })
8282
*
83-
* const output = await render('# Hello\n\nThis is **bold** and _italic_.')
83+
* const output = await renderAnsi('# Hello\n\nThis is **bold** and _italic_.')
8484
* console.log(output)
8585
* ```
8686
*/
87-
export function createRender(options?: ParseOptions & RenderOptions): (markdown: string) => Promise<string> {
88-
const parse = createMarkdownParser(options as ParseOptions)
87+
export function createAnsiRenderer(
88+
options?: ParserOptions & AnsiRendererOptions
89+
): (markdown: string) => Promise<string> {
90+
const parseMarkdown = createMarkdownParser(options as ParserOptions)
8991
return async (markdown: string) => {
90-
const tree = await parse(markdown)
91-
return await renderANSI(tree, options as RenderOptions)
92+
const doc = await parseMarkdown(markdown)
93+
return await renderAnsiFromDocument(doc, options as AnsiRendererOptions)
9294
}
9395
}
9496

9597
/**
96-
* Parse markdown and render it as ANSI-styled output to stdout.
98+
* Parse markdown and render it as an ANSI-styled string.
9799
*
98-
* @param markdown - The markdown/Comark content to parse and print
99-
* @param options - Optional rendering options
100+
* @param markdown - The markdown content to parse and render
101+
* @param options - Optional markdown parser & ANSI renderer options
100102
*
101103
* @example
102104
* ```typescript
103-
* import { render } from '@comark/ansi'
105+
* import { renderAnsi } from '@comark/ansi'
104106
*
105-
* const output = await render('# Hello\n\nThis is **bold** and _italic_.')
107+
* const output = await renderAnsi('# Hello\n\nThis is **bold** and _italic_.')
106108
* console.log(output)
107109
* ```
108110
*/
109-
export async function render(markdown: string, options?: LogOptions): Promise<string> {
110-
return createRender(options)(markdown)
111+
export async function renderAnsi(markdown: string, options?: ParserOptions & AnsiRendererOptions): Promise<string> {
112+
return createAnsiRenderer(options)(markdown)
111113
}

packages/comark-ansi/src/plugins/binding.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ export { default } from 'comark/plugins/binding'
1515
* @example
1616
* ```ts
1717
* import binding, { Binding } from '@comark/ansi/plugins/binding'
18-
* import { renderANSI } from '@comark/ansi'
18+
* import { renderAnsiFromDocument } from '@comark/ansi'
1919
*
20-
* const out = await renderANSI(tree, {
20+
* const out = await renderAnsiFromDocument(tree, {
2121
* components: { binding: Binding },
2222
* })
2323
* ```

packages/comark-ansi/src/plugins/mermaid.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ export * from 'comark/plugins/mermaid'
66
export { default } from 'comark/plugins/mermaid'
77

88
/**
9-
* HTML component render function for mermaid nodes.
10-
* Renders diagrams to inline SVG using `beautiful-mermaid`.
9+
* ANSI component render function for mermaid nodes.
10+
* Renders diagrams as terminal-friendly ASCII using `beautiful-mermaid`.
1111
*
1212
* @example
1313
* ```typescript
1414
* import mermaid, { Mermaid } from '@comark/ansi/plugins/mermaid'
15-
* import { createRender } from '@comark/ansi'
15+
* import { createAnsiRenderer } from '@comark/ansi'
1616
*
17-
* const render = createRender({
17+
* const renderAnsi = createAnsiRenderer({
1818
* plugins: [mermaid()],
1919
* components: { Mermaid },
2020
* })

0 commit comments

Comments
 (0)