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 _ => None,
17 }
18}
19
20pub fn language_to_proto_str(lang: Language) -> &'static str {
21 lang.as_str()
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27 #[test]
28 fn known_languages_round_trip() {
29 for (s, expected) in [
30 ("typescript", Language::TypeScript),
31 ("javascript", Language::TypeScript),
32 ("rust", Language::Rust),
33 ("python", Language::Python),
34 ("go", Language::Go),
35 ("java", Language::Java),
36 ("kotlin", Language::Kotlin),
37 ] {
38 assert_eq!(language_from_proto_str(s), Some(expected), "failed for {s}");
39 }
40 }
41 #[test]
42 fn unknown_language_returns_none() {
43 assert_eq!(language_from_proto_str("TypeScript"), None); assert_eq!(language_from_proto_str("Kotlin"), None); assert_eq!(language_from_proto_str(""), None);
46 }
47}