Skip to main content

arc_lang/
lib.rs

1pub mod ast;
2pub mod lexer;
3pub mod parser;
4pub mod validator;
5pub mod layout;
6pub mod svg;
7pub mod themes;
8pub mod fmt;
9pub mod mcp;
10
11/// Convenience: parse, validate, layout, and render in one call.
12pub fn render(source: &str, theme_name: Option<&str>) -> RenderOutput {
13    let parse_result = parser::parse(source);
14    let (validation, resolved) = validator::validate(&parse_result.document, &parse_result.diagnostics);
15    let layout_result = layout::compute_layout(&resolved);
16    let theme = themes::get_theme(theme_name.unwrap_or(resolved.theme_name()));
17    let svg_output = svg::render_svg(&layout_result, &theme);
18
19    RenderOutput {
20        svg: svg_output,
21        width: layout_result.width,
22        height: layout_result.height,
23        diagnostics: validation.errors,
24        valid: validation.valid,
25    }
26}
27
28pub struct RenderOutput {
29    pub svg: String,
30    pub width: f64,
31    pub height: f64,
32    pub diagnostics: Vec<ast::Diagnostic>,
33    pub valid: bool,
34}