travsr_plugin_protocol/
language_map.rs1use travsr_core::Language;
2
3pub fn language_from_proto_str(s: &str) -> Option<Language> {
6 match s {
7 "typescript" | "javascript" => Some(Language::TypeScript),
8 "rust" => Some(Language::Rust),
9 "python" => Some(Language::Python),
10 "go" => Some(Language::Go),
11 "java" => Some(Language::Java),
12 "kotlin" => Some(Language::Kotlin),
13 "ruby" => Some(Language::Ruby),
14 "csharp" => Some(Language::CSharp),
15 "php" => Some(Language::Php),
16 "scala" => Some(Language::Scala),
17 "cpp" => Some(Language::Cpp),
18 "c" => Some(Language::C),
19 _ => None,
20 }
21}
22
23pub fn language_to_proto_str(lang: Language) -> &'static str {
24 lang.as_str()
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30 #[test]
31 fn known_languages_round_trip() {
32 for (s, expected) in [
33 ("typescript", Language::TypeScript),
34 ("javascript", Language::TypeScript),
35 ("rust", Language::Rust),
36 ("python", Language::Python),
37 ("go", Language::Go),
38 ("java", Language::Java),
39 ("kotlin", Language::Kotlin),
40 ("scala", Language::Scala),
41 ("cpp", Language::Cpp),
42 ("c", Language::C),
43 ] {
44 assert_eq!(language_from_proto_str(s), Some(expected), "failed for {s}");
45 }
46 }
47 #[test]
48 fn unknown_language_returns_none() {
49 assert_eq!(language_from_proto_str("TypeScript"), None); assert_eq!(language_from_proto_str("Kotlin"), None); assert_eq!(language_from_proto_str(""), None);
52 }
53}