ricecoder_storage/lsp/languages/
mod.rs1pub fn get_builtin_language_configs() -> Vec<(&'static str, &'static str)> {
9 vec![
10 ("rust", include_str!("rust.yaml")),
11 ("typescript", include_str!("typescript.yaml")),
12 ("python", include_str!("python.yaml")),
13 ("go", include_str!("go.yaml")),
14 ("java", include_str!("java.yaml")),
15 ("kotlin", include_str!("kotlin.yaml")),
16 ("dart", include_str!("dart.yaml")),
17 ]
18}
19
20pub fn get_language_config(language: &str) -> Option<&'static str> {
22 match language {
23 "rust" => Some(include_str!("rust.yaml")),
24 "typescript" | "ts" | "tsx" => Some(include_str!("typescript.yaml")),
25 "python" | "py" => Some(include_str!("python.yaml")),
26 "go" => Some(include_str!("go.yaml")),
27 "java" => Some(include_str!("java.yaml")),
28 "kotlin" | "kt" | "kts" => Some(include_str!("kotlin.yaml")),
29 "dart" => Some(include_str!("dart.yaml")),
30 _ => None,
31 }
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn test_get_builtin_language_configs() {
40 let configs = get_builtin_language_configs();
41 assert_eq!(configs.len(), 7);
42 assert!(configs.iter().any(|(lang, _)| *lang == "rust"));
43 assert!(configs.iter().any(|(lang, _)| *lang == "typescript"));
44 assert!(configs.iter().any(|(lang, _)| *lang == "python"));
45 assert!(configs.iter().any(|(lang, _)| *lang == "go"));
46 assert!(configs.iter().any(|(lang, _)| *lang == "java"));
47 assert!(configs.iter().any(|(lang, _)| *lang == "kotlin"));
48 assert!(configs.iter().any(|(lang, _)| *lang == "dart"));
49 }
50
51 #[test]
52 fn test_get_language_config_rust() {
53 let config = get_language_config("rust");
54 assert!(config.is_some());
55 assert!(!config.unwrap().is_empty());
56 }
57
58 #[test]
59 fn test_get_language_config_typescript() {
60 let config = get_language_config("typescript");
61 assert!(config.is_some());
62 assert!(!config.unwrap().is_empty());
63 }
64
65 #[test]
66 fn test_get_language_config_python() {
67 let config = get_language_config("python");
68 assert!(config.is_some());
69 assert!(!config.unwrap().is_empty());
70 }
71
72 #[test]
73 fn test_get_language_config_aliases() {
74 assert!(get_language_config("ts").is_some());
75 assert!(get_language_config("tsx").is_some());
76 assert!(get_language_config("py").is_some());
77 }
78
79 #[test]
80 fn test_get_language_config_unknown() {
81 let config = get_language_config("unknown");
82 assert!(config.is_none());
83 }
84}