webforai
Version:
A library that provides a web interface for AI
51 lines (50 loc) • 2.15 kB
JavaScript
// src/utils/detect-code-lang.ts
var languages = [
["bash", [/#!(\/usr)?\/bin\/bash/g, 500], [/\b(if|elif|then|fi|echo)\b|\$/g, 10]],
["html", [/<\/?[a-z-]+[^\n>]*>/g, 10], [/^\s+/g, 10], [/^<\?xml/g, 500]],
["c", [/#include\b|\bprintf\s+\(/g, 100]],
["rs", [/^\s+(use|fn|mut|match)\b/gm, 100]],
["go", [/\b(func|fmt|package)\b/g, 100]],
["java", [/^import\s+java/gm, 500]],
["asm", [/^(section|global main|extern|\t(call|mov|ret))/gm, 100]],
["css", [/^(@import|@page|@media|(\.|#)[a-z]+)/gm, 20]],
["json", [/\b(true|false|null|\{})\b|\"[^"]+\":/g, 10]],
["yaml", [/^(\s+)?[a-z][a-z0-9]*:/gim, 10]]
];
var detectLanguage = (code) => {
return languages.map(
([lang, ...features]) => [lang, features.reduce((acc, [match, score]) => acc + [...code.matchAll(match)].length * score, 0)]
).filter(([_, score]) => score > 20).sort((a, b) => b[1] - a[1])[0]?.[0] || "plain";
};
export {
detectLanguage
};