refactor: extract comark/shiki rendering to separate file

This commit is contained in:
mitchell 2026-04-18 00:56:49 -04:00
parent 2c5e3dd172
commit 20f0c7970a
2 changed files with 116 additions and 108 deletions

114
src/render/markdown.ts Normal file
View 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,
],
}),
],
});
}