probe_code/language/
factory.rs1use probe_code::language::c::CLanguage;
2use probe_code::language::cpp::CppLanguage;
3use probe_code::language::csharp::CSharpLanguage;
4use probe_code::language::go::GoLanguage;
5use probe_code::language::java::JavaLanguage;
6use probe_code::language::javascript::JavaScriptLanguage;
7use probe_code::language::language_trait::LanguageImpl;
8use probe_code::language::php::PhpLanguage;
9use probe_code::language::python::PythonLanguage;
10use probe_code::language::ruby::RubyLanguage;
11use probe_code::language::rust::RustLanguage;
12use probe_code::language::swift::SwiftLanguage;
13use probe_code::language::typescript::TypeScriptLanguage;
14
15pub fn get_language_impl(extension: &str) -> Option<Box<dyn LanguageImpl>> {
17 match extension {
18 "rs" => Some(Box::new(RustLanguage::new())),
19 "js" | "jsx" => Some(Box::new(JavaScriptLanguage::new())),
20 "ts" => Some(Box::new(TypeScriptLanguage::new_typescript())),
21 "tsx" => Some(Box::new(TypeScriptLanguage::new_tsx())),
22 "py" => Some(Box::new(PythonLanguage::new())),
23 "go" => Some(Box::new(GoLanguage::new())),
24 "c" | "h" => Some(Box::new(CLanguage::new())),
25 "cpp" | "cc" | "cxx" | "hpp" | "hxx" => Some(Box::new(CppLanguage::new())),
26 "java" => Some(Box::new(JavaLanguage::new())),
27 "rb" => Some(Box::new(RubyLanguage::new())),
28 "php" => Some(Box::new(PhpLanguage::new())),
29 "swift" => Some(Box::new(SwiftLanguage::new())),
30 "cs" => Some(Box::new(CSharpLanguage::new())),
31 _ => None,
32 }
33}