pub async fn get_language_name(file_path: &str) -> String {
if let Some(ext) = std::path::Path::new(file_path).extension() {
let ext_str = ext.to_string_lossy().to_lowercase();
match ext_str.as_str() {
"js" => "JavaScript",
"ts" => "TypeScript",
"rs" => "Rust",
"py" => "Python",
"go" => "Go",
"java" => "Java",
"c" | "h" => "C",
"cpp" | "cc" | "cxx" => "C++",
"rb" => "Ruby",
"php" => "PHP",
"swift" => "Swift",
"kt" => "Kotlin",
"scala" => "Scala",
"hs" => "Haskell",
"ml" => "OCaml",
"cs" => "C#",
"fs" => "F#",
"vb" => "Visual Basic",
"html" | "htm" => "HTML",
"css" => "CSS",
"scss" | "sass" => "SCSS",
"less" => "Less",
"json" => "JSON",
"yaml" | "yml" => "YAML",
"toml" => "TOML",
"xml" => "XML",
"md" | "markdown" => "Markdown",
"sql" => "SQL",
"sh" | "bash" => "Bash",
"zsh" => "Zsh",
"fish" => "Fish",
"ps1" => "PowerShell",
"dockerfile" => "Dockerfile",
"makefile" => "Makefile",
_ => "unknown",
}
.to_string()
} else {
"unknown".to_string()
}
}