Orrery Library
A Rust library for parsing, layouting, and rendering diagram descriptions written in the Orrery DSL.
Installation
Add to your Cargo.toml:
[dependencies]
orrery = "0.1.0"
Quick Start
use std::path::Path;
use orrery::{DiagramBuilder, InMemorySourceProvider, config::AppConfig};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let source = r#"
diagram component;
frontend: Rectangle [fill_color="lightblue"];
backend: Rectangle [fill_color="lightgreen"];
database: Rectangle;
frontend -> backend: "API";
backend -> database: "SQL";
"#;
let mut provider = InMemorySourceProvider::new();
provider.add_file("diagram.orr", source);
let builder = DiagramBuilder::new(AppConfig::default(), &provider);
let diagram = builder.parse(Path::new("diagram.orr"))?;
let svg = builder.render_svg(&diagram)?;
std::fs::write("output.svg", &svg)?;
Ok(())
}
Custom Configuration
use orrery::{DiagramBuilder, InMemorySourceProvider, config::AppConfig};
let provider = InMemorySourceProvider::new();
let config = AppConfig::default();
let builder = DiagramBuilder::new(config, &provider);
Examples
See the examples directory for more diagram samples.
Documentation
License
Licensed under either of Apache License 2.0 or MIT license at your option.