char/sorcery
static-files based git repo viewer
git clone https://git.t4t.associates/char/sorcery
1fc8dbb
main
1/** file → grammar classification, shared by highlighting and the per-language file listing */ 2 3// mirrors canonical() in src/grammar_manifest.rs; keep them in sync 4const grammars :Record < string , string > = { 5ada :"ada" , 6adb :"ada" , 7adoc :"asciidoc" , 8ads :"ada" , 9agda :"agda" , 10asciidoc :"asciidoc" , 11asm :"asm" , 12assembly :"asm" , 13awk :"awk" , 14bash :"bash" , 15bash_profile :"bash" , 16bashrc :"bash" , 17bat :"batch" , 18batch :"batch" , 19bazel :"starlark" , 20bzl :"starlark" , 21c :"c" , 22"c#" :"c-sharp" , 23"c++" :"cpp" , 24"c-sharp" :"c-sharp" , 25caddy :"caddy" , 26caddyfile :"caddy" , 27capnp :"capnp" , 28cbl :"cobol" , 29cc :"cpp" , 30cedar :"cedar" , 31cedarschema :"cedarschema" , 32cfg :"ini" , 33cjs :"javascript" , 34cl :"commonlisp" , 35clj :"clojure" , 36cljc :"clojure" , 37cljs :"clojure" , 38clojure :"clojure" , 39cmake :"cmake" , 40"cmakelists.txt" :"cmake" , 41cmd :"batch" , 42cob :"cobol" , 43cobol :"cobol" , 44commonlisp :"commonlisp" , 45conf :"ini" , 46console :"bash" , 47containerfile :"dockerfile" , 48cpp :"cpp" , 49cpy :"cobol" , 50cs :"c-sharp" , 51csharp :"c-sharp" , 52csproj :"xml" , 53css :"css" , 54cts :"typescript" , 55cxx :"cpp" , 56d :"d" , 57dart :"dart" , 58devicetree :"devicetree" , 59diff :"diff" , 60dlang :"d" , 61docker :"dockerfile" , 62dockerfile :"dockerfile" , 63dot :"dot" , 64dts :"devicetree" , 65dtsi :"devicetree" , 66editorconfig :"ini" , 67edn :"clojure" , 68el :"elisp" , 69elisp :"elisp" , 70elixir :"elixir" , 71elm :"elm" , 72"emacs-lisp" :"elisp" , 73erl :"erlang" , 74erlang :"erlang" , 75ex :"elixir" , 76exs :"elixir" , 77"f#" :"fsharp" , 78fish :"fish" , 79frag :"glsl" , 80fs :"fsharp" , 81fsharp :"fsharp" , 82fsx :"fsharp" , 83gemfile :"ruby" , 84gemspec :"ruby" , 85gitattributes :"gitattributes" , 86gitconfig :"ini" , 87gitmodules :"ini" , 88gleam :"gleam" , 89glsl :"glsl" , 90gnumakefile :"make" , 91go :"go" , 92golang :"go" , 93gql :"graphql" , 94gradle :"groovy" , 95graphql :"graphql" , 96graphviz :"dot" , 97groovy :"groovy" , 98gsh :"groovy" , 99gv :"dot" , 100gvy :"groovy" , 101gy :"groovy" , 102h :"c" , 103haskell :"haskell" , 104hcl :"hcl" , 105hh :"cpp" , 106hlsl :"hlsl" , 107hpp :"cpp" , 108hrl :"erlang" , 109hs :"haskell" , 110htm :"html" , 111html :"html" , 112hxx :"cpp" , 113idr :"idris" , 114idris :"idris" , 115ini :"ini" , 116j2 :"jinja2" , 117java :"java" , 118javascript :"javascript" , 119jinja :"jinja2" , 120jinja2 :"jinja2" , 121jl :"julia" , 122jq :"jq" , 123js :"javascript" , 124jsdoc :"jsdoc" , 125json :"json" , 126json5 :"json" , 127jsonc :"json" , 128jsx :"javascript" , 129julia :"julia" , 130just :"just" , 131justfile :"just" , 132kconfig :"kconfig" , 133kdl :"kdl" , 134kotlin :"kotlin" , 135kt :"kotlin" , 136kts :"kotlin" , 137lean :"lean" , 138lisp :"commonlisp" , 139lua :"lua" , 140m :"matlab" , 141make :"make" , 142makefile :"make" , 143markdown :"markdown" , 144matlab :"matlab" , 145md :"markdown" , 146mdx :"markdown" , 147meson :"meson" , 148"meson.build" :"meson" , 149mjs :"javascript" , 150mk :"make" , 151ml :"ocaml" , 152mli :"ocaml" , 153mm :"objc" , 154mts :"typescript" , 155mysql :"sql" , 156nasm :"x86asm" , 157nginx :"nginx" , 158"nginx.conf" :"nginx" , 159ninja :"ninja" , 160nix :"nix" , 161objc :"objc" , 162"objective-c" :"objc" , 163objectivec :"objc" , 164ocaml :"ocaml" , 165odin :"odin" , 166opa :"rego" , 167patch :"diff" , 168pbtxt :"textproto" , 169perl :"perl" , 170pgsql :"sql" , 171php :"php" , 172pl :"perl" , 173plist :"xml" , 174plsql :"sql" , 175pm :"perl" , 176postgres :"sql" , 177postgresql :"sql" , 178postscript :"postscript" , 179powershell :"powershell" , 180pro :"prolog" , 181prolog :"prolog" , 182proto :"proto" , 183protobuf :"proto" , 184ps :"postscript" , 185ps1 :"powershell" , 186psm1 :"powershell" , 187pwsh :"powershell" , 188py :"python" , 189py3 :"python" , 190pyi :"python" , 191python :"python" , 192python3 :"python" , 193query :"query" , 194r :"r" , 195racket :"scheme" , 196rakefile :"ruby" , 197rb :"ruby" , 198regex :"regex" , 199regexp :"regex" , 200rego :"rego" , 201res :"rescript" , 202rescript :"rescript" , 203rkt :"scheme" , 204rlang :"r" , 205ron :"ron" , 206rq :"sparql" , 207rs :"rust" , 208ruby :"ruby" , 209rust :"rust" , 210s :"asm" , 211sass :"scss" , 212sbt :"scala" , 213scala :"scala" , 214scheme :"scheme" , 215scm :"query" , 216scss :"scss" , 217sh :"bash" , 218shell :"bash" , 219sol :"solidity" , 220solidity :"solidity" , 221sparql :"sparql" , 222sql :"sql" , 223sqlite :"sql" , 224ss :"scheme" , 225"ssh-config" :"ssh-config" , 226ssh_config :"ssh-config" , 227sshd_config :"ssh-config" , 228starlark :"starlark" , 229styx :"styx" , 230sv :"verilog" , 231svelte :"svelte" , 232svg :"xml" , 233swift :"swift" , 234systemverilog :"verilog" , 235terraform :"hcl" , 236textpb :"textproto" , 237textproto :"textproto" , 238tf :"hcl" , 239tfvars :"hcl" , 240thrift :"thrift" , 241tla :"tlaplus" , 242tlaplus :"tlaplus" , 243toml :"toml" , 244ts :"typescript" , 245tsql :"sql" , 246tsx :"tsx" , 247typ :"typst" , 248typescript :"typescript" , 249typst :"typst" , 250ua :"uiua" , 251uiua :"uiua" , 252v :"verilog" , 253vb :"vb" , 254vbnet :"vb" , 255verilog :"verilog" , 256vert :"glsl" , 257vhd :"vhdl" , 258vhdl :"vhdl" , 259vim :"vim" , 260viml :"vim" , 261vimrc :"vim" , 262vimscript :"vim" , 263visualbasic :"vb" , 264vue :"vue" , 265"wasm-interface" :"wit" , 266wit :"wit" , 267x86 :"x86asm" , 268x86asm :"x86asm" , 269xhtml :"html" , 270xml :"xml" , 271xsd :"xml" , 272xsl :"xml" , 273xslt :"xml" , 274yaml :"yaml" , 275yml :"yaml" , 276yuri :"yuri" , 277zig :"zig" , 278zon :"zig" , 279zsh :"zsh" , 280zshrc :"zsh" , 281}; 282 283/** mirrors detect() in src/grammar_manifest.rs: by file name, then by extension */ 284export function detectLanguage ( path :string ) :string | null { 285const name = path . split ( "/" ). at ( - 1 ) ! . toLowerCase (); 286return grammars [ name ] ?? grammars [ name . split ( "." ). at ( - 1 ) ! ] ?? null ; 287} 288 289/** mirrors group() in src/languages.rs; keep them in sync */ 290export const languageGroup = ( grammar :string ) => grammar === "tsx" ?"typescript" :grammar ;