use hedl::{canonicalize, parse, to_json, validate};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== HEDL Quick Start Example ===\n");
let hedl_text = r#"%V:2.0
%NULL:~
%QUOTE:"
%S:Product:[id,name,price,category]
---
# Product catalog
products:@Product
|laptop,ThinkPad X1,1299.99,electronics
|mouse,Wireless Mouse,29.99,accessories
|keyboard,Mechanical Keyboard,149.99,accessories
# Simple key-value pairs
store_name: Tech Paradise
location: San Francisco
"#;
println!("Input HEDL document:");
println!("{hedl_text}");
println!();
println!("--- Parsing ---");
let doc = parse(hedl_text)?;
println!("✓ Parsed successfully");
println!(" Version: {}.{}", doc.version.0, doc.version.1);
println!(" Structs: {} defined", doc.structs.len());
println!(" Root items: {}", doc.root.len());
println!();
println!("--- Validation ---");
validate(hedl_text)?;
println!("✓ Document is valid");
println!();
println!("--- JSON Conversion ---");
let json = to_json(&doc)?;
println!("JSON output:");
println!("{json}");
println!();
println!("--- Canonicalization ---");
let canonical = canonicalize(&doc)?;
println!("Canonical HEDL (sorted, deterministic):");
println!("{canonical}");
Ok(())
}