forks/sorcery

git clone https://git.gae.moe/forks/sorcery

Charlotte Somunify language selection between serverside and clientside0c80b85

typst_support
750 B15 linesraw
1/** file → grammar classification, shared by highlighting and the per-language file listing */
2
3import languages from "./languages.json" with { type: "json" };
4
5const filenames = new Map(Object.entries(languages.filenames));
6const aliases = new Map(Object.entries(languages.aliases));
7
8/** mirrors detect() in src/grammar_manifest.rs: by file name, then by extension */
9export function detectLanguage(path: string): string | null {
10  const name = path.split(/[/\\]/).at(-1)!.toLowerCase();
11  return filenames.get(name) ?? aliases.get(name) ?? aliases.get(name.split(".").at(-1)!) ?? null;
12}
13
14/** mirrors group() in src/languages.rs; keep them in sync */
15export const languageGroup = (grammar: string) => grammar === "tsx" ? "typescript" : grammar;