use serializer::llm::{DxDocument, DxLlmValue, LlmParser, LlmSerializer};
fn main() {
println!("\n╔══════════════════════════════════════════════════════════════╗");
println!("║ Dx Serializer LEAF INLINE SYNTAX (::) DEMO ║");
println!("╚══════════════════════════════════════════════════════════════╝\n");
println!("═══════════════════════════════════════════════════════════════");
println!(" LEAF INLINE SYNTAX (::) ");
println!("═══════════════════════════════════════════════════════════════\n");
let input = r#"name: dx
version: 0.0.1
forge.repository:: https://dx.vercel.app/user/repo
style.path:: @/style
api.endpoint:: http://localhost:8080/api/v1
config.regex:: ^[a-zA-Z0-9]+$"#;
println!("INPUT (Dx Serializer with leaf inline syntax):");
println!("─────────────────────────────────────────────────────────────────");
println!("{}", input.trim());
println!("─────────────────────────────────────────────────────────────────\n");
let doc = LlmParser::parse(input).expect("Failed to parse");
println!("PARSED VALUES:");
println!("─────────────────────────────────────────────────────────────────");
for (key, value) in &doc.context {
println!(" {} = {:?}", key, value);
}
println!("─────────────────────────────────────────────────────────────────\n");
println!("═══════════════════════════════════════════════════════════════");
println!(" WHY USE LEAF INLINE? ");
println!("═══════════════════════════════════════════════════════════════\n");
println!("1. URLs with colons:");
println!(" ❌ url: https://example.com → might parse 'https' as key");
println!(" ✅ url:: https://example.com → value is 'https://example.com'\n");
println!("2. Paths with special chars:");
println!(" ❌ path: @/components/ui → might interpret @ specially");
println!(" ✅ path:: @/components/ui → value is '@/components/ui'\n");
println!("3. Regex patterns:");
println!(" ❌ pattern: ^[a-z]+$ → might parse incorrectly");
println!(" ✅ pattern:: ^[a-z]+$ → value is '^[a-z]+$'\n");
println!("═══════════════════════════════════════════════════════════════");
println!(" ROUND-TRIP TEST ");
println!("═══════════════════════════════════════════════════════════════\n");
let mut doc = DxDocument::new();
doc.context.insert(
"forge.repository".to_string(),
DxLlmValue::Str("https://github.com/user/repo".to_string()),
);
doc.context.insert(
"api.base".to_string(),
DxLlmValue::Str("http://localhost:3000".to_string()),
);
doc.context
.insert("name".to_string(), DxLlmValue::Str("my-app".to_string()));
let serializer = LlmSerializer::new();
let output = serializer.serialize(&doc);
println!("SERIALIZED OUTPUT:");
println!("─────────────────────────────────────────────────────────────────");
println!("{}", output);
println!("─────────────────────────────────────────────────────────────────\n");
let parsed = LlmParser::parse(&output).expect("Failed to parse serialized output");
println!("✅ Round-trip successful!");
println!(" Original values preserved: {}", parsed.context.len());
}