refactor: extract comark/shiki rendering to separate file
This commit is contained in:
parent
2c5e3dd172
commit
20f0c7970a
2 changed files with 116 additions and 108 deletions
|
|
@ -1,54 +1,5 @@
|
||||||
import os from "node:os";
|
import os from "node:os";
|
||||||
import type { WriteStream } from "node:tty";
|
import type { WriteStream } from "node:tty";
|
||||||
import { render } from "@comark/ansi";
|
|
||||||
import highlight from "@comark/ansi/plugins/highlight";
|
|
||||||
import bash from "@shikijs/langs/bash";
|
|
||||||
import c from "@shikijs/langs/c";
|
|
||||||
import cpp from "@shikijs/langs/cpp";
|
|
||||||
import csharp from "@shikijs/langs/csharp";
|
|
||||||
import css from "@shikijs/langs/css";
|
|
||||||
import docker from "@shikijs/langs/docker";
|
|
||||||
import elixir from "@shikijs/langs/elixir";
|
|
||||||
import golang from "@shikijs/langs/go";
|
|
||||||
import graphql from "@shikijs/langs/graphql";
|
|
||||||
import hcl from "@shikijs/langs/hcl";
|
|
||||||
import html from "@shikijs/langs/html";
|
|
||||||
import ini from "@shikijs/langs/ini";
|
|
||||||
import java from "@shikijs/langs/java";
|
|
||||||
import javascript from "@shikijs/langs/javascript";
|
|
||||||
import json from "@shikijs/langs/json";
|
|
||||||
import jsx from "@shikijs/langs/jsx";
|
|
||||||
import kotlin from "@shikijs/langs/kotlin";
|
|
||||||
import less from "@shikijs/langs/less";
|
|
||||||
import lua from "@shikijs/langs/lua";
|
|
||||||
import markdown from "@shikijs/langs/markdown";
|
|
||||||
import mdc from "@shikijs/langs/mdc";
|
|
||||||
import objc from "@shikijs/langs/objc";
|
|
||||||
import ocaml from "@shikijs/langs/ocaml";
|
|
||||||
import perl from "@shikijs/langs/perl";
|
|
||||||
import php from "@shikijs/langs/php";
|
|
||||||
import powershell from "@shikijs/langs/powershell";
|
|
||||||
import proto from "@shikijs/langs/proto";
|
|
||||||
import python from "@shikijs/langs/python";
|
|
||||||
import r from "@shikijs/langs/r";
|
|
||||||
import ruby from "@shikijs/langs/ruby";
|
|
||||||
import rust from "@shikijs/langs/rust";
|
|
||||||
import scss from "@shikijs/langs/scss";
|
|
||||||
import sql from "@shikijs/langs/sql";
|
|
||||||
import svelte from "@shikijs/langs/svelte";
|
|
||||||
import swift from "@shikijs/langs/swift";
|
|
||||||
import terraform from "@shikijs/langs/terraform";
|
|
||||||
import toml from "@shikijs/langs/toml";
|
|
||||||
import tsx from "@shikijs/langs/tsx";
|
|
||||||
import typescript from "@shikijs/langs/typescript";
|
|
||||||
import vim from "@shikijs/langs/vim";
|
|
||||||
import vue from "@shikijs/langs/vue";
|
|
||||||
import xml from "@shikijs/langs/xml";
|
|
||||||
import yaml from "@shikijs/langs/yaml";
|
|
||||||
import zig from "@shikijs/langs/zig";
|
|
||||||
import zsh from "@shikijs/langs/zsh";
|
|
||||||
import kanagawaLotus from "@shikijs/themes/kanagawa-lotus";
|
|
||||||
import kanagawaWave from "@shikijs/themes/kanagawa-wave";
|
|
||||||
import type {
|
import type {
|
||||||
AsyncIterableStream,
|
AsyncIterableStream,
|
||||||
LanguageModelUsage,
|
LanguageModelUsage,
|
||||||
|
|
@ -57,6 +8,7 @@ import type {
|
||||||
} from "ai";
|
} from "ai";
|
||||||
import styles from "ansi-styles";
|
import styles from "ansi-styles";
|
||||||
import { chalkStderr, supportsColorStderr } from "chalk";
|
import { chalkStderr, supportsColorStderr } from "chalk";
|
||||||
|
import { renderMarkdown } from "./markdown";
|
||||||
|
|
||||||
const home = os.homedir();
|
const home = os.homedir();
|
||||||
const reasoningFile = Bun.file(`${home}/.aicl_reasoning.md`);
|
const reasoningFile = Bun.file(`${home}/.aicl_reasoning.md`);
|
||||||
|
|
@ -198,65 +150,7 @@ export default class Renderer {
|
||||||
|
|
||||||
const [columns] = process.stdout.getWindowSize();
|
const [columns] = process.stdout.getWindowSize();
|
||||||
this.write("\n");
|
this.write("\n");
|
||||||
this.write(
|
this.write(await renderMarkdown(text, columns));
|
||||||
await render(await text, {
|
|
||||||
width: columns,
|
|
||||||
plugins: [
|
|
||||||
highlight({
|
|
||||||
themes: { dark: kanagawaWave, light: kanagawaLotus },
|
|
||||||
registerDefaultThemes: false,
|
|
||||||
registerDefaultLanguages: false,
|
|
||||||
languages: [
|
|
||||||
bash,
|
|
||||||
c,
|
|
||||||
cpp,
|
|
||||||
csharp,
|
|
||||||
css,
|
|
||||||
docker,
|
|
||||||
elixir,
|
|
||||||
golang,
|
|
||||||
graphql,
|
|
||||||
hcl,
|
|
||||||
html,
|
|
||||||
ini,
|
|
||||||
java,
|
|
||||||
javascript,
|
|
||||||
json,
|
|
||||||
jsx,
|
|
||||||
kotlin,
|
|
||||||
less,
|
|
||||||
lua,
|
|
||||||
markdown,
|
|
||||||
mdc,
|
|
||||||
objc,
|
|
||||||
ocaml,
|
|
||||||
perl,
|
|
||||||
php,
|
|
||||||
powershell,
|
|
||||||
proto,
|
|
||||||
python,
|
|
||||||
r,
|
|
||||||
ruby,
|
|
||||||
rust,
|
|
||||||
scss,
|
|
||||||
sql,
|
|
||||||
svelte,
|
|
||||||
swift,
|
|
||||||
terraform,
|
|
||||||
toml,
|
|
||||||
tsx,
|
|
||||||
typescript,
|
|
||||||
vim,
|
|
||||||
vue,
|
|
||||||
xml,
|
|
||||||
yaml,
|
|
||||||
zig,
|
|
||||||
zsh,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
this.write("\n");
|
this.write("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
114
src/render/markdown.ts
Normal file
114
src/render/markdown.ts
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
import { render } from "@comark/ansi";
|
||||||
|
import highlight from "@comark/ansi/plugins/highlight";
|
||||||
|
import bash from "@shikijs/langs/bash";
|
||||||
|
import c from "@shikijs/langs/c";
|
||||||
|
import cpp from "@shikijs/langs/cpp";
|
||||||
|
import csharp from "@shikijs/langs/csharp";
|
||||||
|
import css from "@shikijs/langs/css";
|
||||||
|
import docker from "@shikijs/langs/docker";
|
||||||
|
import elixir from "@shikijs/langs/elixir";
|
||||||
|
import golang from "@shikijs/langs/go";
|
||||||
|
import graphql from "@shikijs/langs/graphql";
|
||||||
|
import groovy from "@shikijs/langs/groovy";
|
||||||
|
import hcl from "@shikijs/langs/hcl";
|
||||||
|
import html from "@shikijs/langs/html";
|
||||||
|
import ini from "@shikijs/langs/ini";
|
||||||
|
import java from "@shikijs/langs/java";
|
||||||
|
import javascript from "@shikijs/langs/javascript";
|
||||||
|
import json from "@shikijs/langs/json";
|
||||||
|
import jsx from "@shikijs/langs/jsx";
|
||||||
|
import kotlin from "@shikijs/langs/kotlin";
|
||||||
|
import less from "@shikijs/langs/less";
|
||||||
|
import lua from "@shikijs/langs/lua";
|
||||||
|
import markdown from "@shikijs/langs/markdown";
|
||||||
|
import mdc from "@shikijs/langs/mdc";
|
||||||
|
import objc from "@shikijs/langs/objc";
|
||||||
|
import ocaml from "@shikijs/langs/ocaml";
|
||||||
|
import perl from "@shikijs/langs/perl";
|
||||||
|
import php from "@shikijs/langs/php";
|
||||||
|
import powershell from "@shikijs/langs/powershell";
|
||||||
|
import proto from "@shikijs/langs/proto";
|
||||||
|
import python from "@shikijs/langs/python";
|
||||||
|
import r from "@shikijs/langs/r";
|
||||||
|
import ruby from "@shikijs/langs/ruby";
|
||||||
|
import rust from "@shikijs/langs/rust";
|
||||||
|
import scss from "@shikijs/langs/scss";
|
||||||
|
import sql from "@shikijs/langs/sql";
|
||||||
|
import svelte from "@shikijs/langs/svelte";
|
||||||
|
import swift from "@shikijs/langs/swift";
|
||||||
|
import terraform from "@shikijs/langs/terraform";
|
||||||
|
import toml from "@shikijs/langs/toml";
|
||||||
|
import tsx from "@shikijs/langs/tsx";
|
||||||
|
import typescript from "@shikijs/langs/typescript";
|
||||||
|
import vim from "@shikijs/langs/vim";
|
||||||
|
import vue from "@shikijs/langs/vue";
|
||||||
|
import xml from "@shikijs/langs/xml";
|
||||||
|
import yaml from "@shikijs/langs/yaml";
|
||||||
|
import zig from "@shikijs/langs/zig";
|
||||||
|
import zsh from "@shikijs/langs/zsh";
|
||||||
|
import kanagawaLotus from "@shikijs/themes/kanagawa-lotus";
|
||||||
|
import kanagawaWave from "@shikijs/themes/kanagawa-wave";
|
||||||
|
|
||||||
|
export async function renderMarkdown(
|
||||||
|
text: PromiseLike<string>,
|
||||||
|
columns: number,
|
||||||
|
) {
|
||||||
|
return render(await text, {
|
||||||
|
width: columns,
|
||||||
|
plugins: [
|
||||||
|
highlight({
|
||||||
|
themes: { dark: kanagawaWave, light: kanagawaLotus },
|
||||||
|
registerDefaultThemes: false,
|
||||||
|
registerDefaultLanguages: false,
|
||||||
|
languages: [
|
||||||
|
bash,
|
||||||
|
c,
|
||||||
|
cpp,
|
||||||
|
csharp,
|
||||||
|
css,
|
||||||
|
docker,
|
||||||
|
elixir,
|
||||||
|
golang,
|
||||||
|
graphql,
|
||||||
|
groovy,
|
||||||
|
hcl,
|
||||||
|
html,
|
||||||
|
ini,
|
||||||
|
java,
|
||||||
|
javascript,
|
||||||
|
json,
|
||||||
|
jsx,
|
||||||
|
kotlin,
|
||||||
|
less,
|
||||||
|
lua,
|
||||||
|
markdown,
|
||||||
|
mdc,
|
||||||
|
objc,
|
||||||
|
ocaml,
|
||||||
|
perl,
|
||||||
|
php,
|
||||||
|
powershell,
|
||||||
|
proto,
|
||||||
|
python,
|
||||||
|
r,
|
||||||
|
ruby,
|
||||||
|
rust,
|
||||||
|
scss,
|
||||||
|
sql,
|
||||||
|
svelte,
|
||||||
|
swift,
|
||||||
|
terraform,
|
||||||
|
toml,
|
||||||
|
tsx,
|
||||||
|
typescript,
|
||||||
|
vim,
|
||||||
|
vue,
|
||||||
|
xml,
|
||||||
|
yaml,
|
||||||
|
zig,
|
||||||
|
zsh,
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue