daipendency_extractor/
extractor.rs1use crate::error::{DependencyResolutionError, ExtractionError};
2use crate::library_metadata::{LibraryMetadata, LibraryMetadataError};
3use crate::types::Namespace;
4use std::path::{Path, PathBuf};
5use tree_sitter::{Language, Parser};
6
7pub trait Extractor<EntryPoint> {
9 fn get_parser_language(&self) -> Language;
11
12 fn get_library_metadata(
14 &self,
15 path: &Path,
16 ) -> Result<LibraryMetadata<EntryPoint>, LibraryMetadataError>;
17
18 fn extract_public_api(
20 &self,
21 metadata: &LibraryMetadata<EntryPoint>,
22 parser: &mut Parser,
23 ) -> Result<Vec<Namespace>, ExtractionError>;
24
25 fn resolve_dependency_path(
27 &self,
28 dependency_name: &str,
29 dependant_path: &Path,
30 ) -> Result<PathBuf, DependencyResolutionError>;
31}