use crate::{tree_sitter_adapter, LinkNetwork, ParseConfiguration};
pub trait LanguageParser {
fn parse_source(
&self,
text: &str,
language: &str,
configuration: ParseConfiguration,
) -> LinkNetwork;
}
#[derive(Clone, Copy, Debug, Default)]
pub struct BuiltInLanguageParser;
impl LanguageParser for BuiltInLanguageParser {
fn parse_source(
&self,
text: &str,
language: &str,
configuration: ParseConfiguration,
) -> LinkNetwork {
tree_sitter_adapter::parse(text, language, configuration)
.unwrap_or_else(|| LinkNetwork::parse_lossless_text(text, language, configuration))
}
}