probe-code 0.6.0

AI-friendly, fully local, semantic code search tool for large codebases
Documentation
use probe_code::language::c::CLanguage;
use probe_code::language::cpp::CppLanguage;
use probe_code::language::csharp::CSharpLanguage;
use probe_code::language::go::GoLanguage;
use probe_code::language::java::JavaLanguage;
use probe_code::language::javascript::JavaScriptLanguage;
use probe_code::language::language_trait::LanguageImpl;
use probe_code::language::php::PhpLanguage;
use probe_code::language::python::PythonLanguage;
use probe_code::language::ruby::RubyLanguage;
use probe_code::language::rust::RustLanguage;
use probe_code::language::swift::SwiftLanguage;
use probe_code::language::typescript::TypeScriptLanguage;

/// Factory function to get the appropriate language implementation based on file extension
pub fn get_language_impl(extension: &str) -> Option<Box<dyn LanguageImpl>> {
    match extension {
        "rs" => Some(Box::new(RustLanguage::new())),
        "js" | "jsx" => Some(Box::new(JavaScriptLanguage::new())),
        "ts" => Some(Box::new(TypeScriptLanguage::new_typescript())),
        "tsx" => Some(Box::new(TypeScriptLanguage::new_tsx())),
        "py" => Some(Box::new(PythonLanguage::new())),
        "go" => Some(Box::new(GoLanguage::new())),
        "c" | "h" => Some(Box::new(CLanguage::new())),
        "cpp" | "cc" | "cxx" | "hpp" | "hxx" => Some(Box::new(CppLanguage::new())),
        "java" => Some(Box::new(JavaLanguage::new())),
        "rb" => Some(Box::new(RubyLanguage::new())),
        "php" => Some(Box::new(PhpLanguage::new())),
        "swift" => Some(Box::new(SwiftLanguage::new())),
        "cs" => Some(Box::new(CSharpLanguage::new())),
        _ => None,
    }
}