/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/lib/languages.ts
152 строки
4 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
/** Shiki language id + подпись в каталоге */ export const LANGUAGE_CATALOG = [ {id: 'html', label: 'HTML'}, {id: 'css', label: 'CSS'}, {id: 'javascript', label: 'JavaScript'}, {id: 'python', label: 'Python'}, {id: 'xml', label: 'XML / XAML'}, {id: 'json', label: 'JSON'}, {id: 'java', label: 'Java'}, {id: 'csharp', label: 'C#'}, {id: 'fsharp', label: 'F#'}, {id: 'c', label: 'C'}, {id: 'cpp', label: 'C++'}, {id: 'kotlin', label: 'Kotlin'}, {id: 'go', label: 'Go'}, {id: 'yaml', label: 'YAML'}, {id: 'bash', label: 'Bash'}, {id: 'powershell', label: 'PowerShell'}, {id: 'groovy', label: 'Groovy'}, {id: 'rust', label: 'Rust'}, {id: 'ruby', label: 'Ruby'}, {id: 'php', label: 'PHP'}, {id: 'sql', label: 'SQL'}, {id: 'r', label: 'R'}, {id: 'haskell', label: 'Haskell'}, {id: 'scala', label: 'Scala'}, {id: 'elixir', label: 'Elixir'}, {id: 'zig', label: 'Zig'}, {id: 'nim', label: 'Nim'}, {id: 'julia', label: 'Julia'}, {id: 'http', label: 'HTTP'}, {id: 'dax', label: 'DAX'}, {id: 'dockerfile', label: 'Dockerfile'}, {id: 'typescript', label: 'TypeScript'}, {id: 'pascal', label: 'Pascal'}, {id: 'latex', label: 'LaTeX'}, {id: 'lua', label: 'Lua'}, {id: 'dart', label: 'Dart / Flutter'}, {id: 'vue', label: 'Vue'}, {id: 'svelte', label: 'Svelte'}, {id: 'nginx', label: 'Nginx'}, {id: 'promql', label: 'PromQL'}, {id: 'mcfunction', label: 'mcfunction'}, {id: 'batch', label: 'CMD / Batch'}, {id: 'smalltalk', label: 'Smalltalk'}, {id: 'assembler', label: 'Assembler'}, {id: 'cobol', label: 'COBOL'}, {id: 'fortran', label: 'Fortran'}, {id: 'lisp', label: 'Lisp'}, {id: 'vb', label: 'Visual Basic'}, {id: 'bsl', label: '1С (BSL)'}, ] as const; const EXT_TO_LANG: Record<string, string> = { html: 'html', htm: 'html', css: 'css', js: 'javascript', mjs: 'javascript', ts: 'typescript', py: 'python', xml: 'xml', xaml: 'xml', json: 'json', java: 'java', cs: 'csharp', fs: 'fsharp', c: 'c', cpp: 'cpp', cc: 'cpp', h: 'c', hpp: 'cpp', kt: 'kotlin', kts: 'kotlin', go: 'go', yaml: 'yaml', yml: 'yaml', sh: 'bash', bash: 'bash', ps1: 'powershell', groovy: 'groovy', rs: 'rust', rb: 'ruby', php: 'php', sql: 'sql', r: 'r', hs: 'haskell', scala: 'scala', ex: 'elixir', zig: 'zig', nim: 'nim', jl: 'julia', http: 'http', dax: 'dax', dockerfile: 'dockerfile', md: 'markdown', pas: 'pascal', tex: 'latex', lua: 'lua', dart: 'dart', vue: 'vue', svelte: 'svelte', conf: 'nginx', hcl: 'hcl', tf: 'hcl', promql: 'promql', mcfunction: 'mcfunction', cmd: 'batch', st: 'smalltalk', asm: 'asm', cbl: 'cobol', cpy: 'cobol', f90: 'fortran', f95: 'fortran', f: 'fortran', for: 'fortran', lisp: 'lisp', cl: 'lisp', vb: 'vb', bas: 'vb', vbs: 'vb', bsl: 'bsl', gitignore: 'text', gitattributes: 'text', ini: 'ini', }; export function langFromFilename(name: string): string { const lower = name.toLowerCase(); if (lower === 'dockerfile') { return 'dockerfile'; } const ext = lower.split('.').pop() ?? lower; return EXT_TO_LANG[ext] ?? 'text'; } const EXTRA_LABELS: Record<string, string> = { git: 'Git', asm: 'Assembler', typescript: 'TypeScript', markdown: 'Markdown', text: 'Plain text', }; /** Человекочитаемое название языка для подписи в блоке кода */ export function getLanguageLabel(id: string): string { const found = LANGUAGE_CATALOG.find((l) => l.id === id); if (found) return found.label; if (EXTRA_LABELS[id]) return EXTRA_LABELS[id]; if (!id) return 'Код'; return id.charAt(0).toUpperCase() + id.slice(1); }