daipendency/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mod extractors;
mod formatting;
mod languages;
use std::path::Path;

use daipendency_extractor::get_parser;
use extractors::get_extractor;
use formatting::format_library_context;

pub use languages::Language;

/// Generate API documentation for a library in the specified language.
///
/// # Arguments
///
/// * `language` - The programming language of the library
/// * `path` - Path to the library's root directory
///
/// # Returns
///
/// Returns a Result containing the generated documentation as a string, or an error if something went wrong.
pub fn generate_documentation(language: Language, path: &Path) -> anyhow::Result<String> {
    let extractor = get_extractor(language);
    let metadata = extractor.get_library_metadata(path)?;
    let mut parser = get_parser(&extractor.get_parser_language())?;
    let namespaces = extractor.extract_public_api(&metadata, &mut parser)?;

    let documentation = format_library_context(&metadata, &namespaces, language);

    Ok(documentation)
}