mod go;
mod java;
mod javascript;
mod kotlin;
pub mod lang;
pub mod python;
mod rust;
pub mod scope;
mod sfc;
pub use lang::Language;
use crate::cache::models::{NewBinding, NewImport, NewRef, NewScope, NewSymbol};
#[derive(Debug, Default)]
pub struct ParsedFile {
pub symbols: Vec<NewSymbol>,
pub imports: Vec<NewImport>,
pub refs: Vec<NewRef>,
pub scopes: Vec<NewScope>,
pub bindings: Vec<NewBinding>,
pub parse_ok: bool,
}
pub fn parse_file(language: Language, source: &str) -> ParsedFile {
match language {
Language::Rust => rust::parse(source),
Language::JavaScript | Language::Jsx | Language::TypeScript | Language::Tsx => {
javascript::parse(source, language)
}
Language::Python => python::python::parse(source),
Language::Java => java::parse(source),
Language::Kotlin => kotlin::parse(source),
Language::Vue | Language::Svelte => sfc::parse(source, language),
Language::Go => go::parse(source),
}
}