Skip to main content

codemov_parser/
lib.rs

1pub mod rust;
2mod tests;
3pub mod typescript;
4
5use codemov_core::{ImportEdge, Language, Symbol};
6use thiserror::Error;
7
8#[derive(Debug, Error)]
9pub enum ParseError {
10    #[error("unsupported language: {0:?}")]
11    UnsupportedLanguage(Language),
12    #[error("parse error: {0}")]
13    Parse(String),
14    #[error("utf8 error: {0}")]
15    Utf8(#[from] std::str::Utf8Error),
16}
17
18pub fn extract_symbols(source: &[u8], language: Language) -> Result<Vec<Symbol>, ParseError> {
19    match language {
20        Language::Rust => rust::extract(source),
21        Language::TypeScript | Language::JavaScript => typescript::extract(source, language),
22        Language::Unknown => Ok(vec![]),
23    }
24}
25
26pub fn extract_imports(source: &[u8], language: Language) -> Result<Vec<ImportEdge>, ParseError> {
27    match language {
28        Language::Rust => rust::extract_imports(source),
29        Language::TypeScript | Language::JavaScript => {
30            typescript::extract_imports(source, language)
31        }
32        Language::Unknown => Ok(vec![]),
33    }
34}