Expand description
§AST Generation Engine
This module handles the transformation of user-friendly BuildRequest structures
into intermediate Abstract Syntax Trees (AST) that can be rendered as DDEX XML.
§Architecture Overview
Generation Pipeline
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ BuildRequest │───▶│ ASTGenerator │───▶│ AST │
│ (user-friendly) │ │ │ │ (tree structure)│
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ • Releases │ │ • Schema Rules │ │ • Elements │
│ • Tracks │ │ • Validation │ │ • Attributes │
│ • Metadata │ │ • Linking │ │ • Namespaces │
│ • Deals │ │ • References │ │ • Structure │
└─────────────┘ └─────────────────┘ └─────────────────┘§Key Components
- ASTGenerator: Main orchestrator that converts requests to AST
- xml_writer: High-level XML writer with formatting
- optimized_xml_writer: Performance-optimized XML writer for large files
§Generation Process
- Schema Selection: Choose DDEX version and namespace configuration
- Structure Generation: Create hierarchical element structure
- Reference Linking: Establish cross-references between elements
- Validation: Ensure generated AST meets schema requirements
- Optimization: Apply performance optimizations for large documents
§Usage Example
use ddex_builder::generator::ASTGenerator;
use ddex_builder::{BuildRequest, ReleaseRequest};
let mut generator = ASTGenerator::new("4.3".to_string());
let request = BuildRequest {
releases: vec![ReleaseRequest {
release_id: "R123".to_string(),
tracks: vec![/* track data */],
// ... other fields
}],
// ... other fields
};
let ast = generator.generate(&request)?;
// AST is now ready for XML serialization§Performance Characteristics
- Small releases (< 10 tracks): ~1-2ms generation time
- Medium releases (10-50 tracks): ~5-8ms generation time
- Large releases (50+ tracks): ~15-25ms generation time
- Memory usage: ~2-5MB peak for typical releases
§Error Handling
The generator validates input data and provides detailed error messages for:
- Missing required fields
- Invalid reference linkages
- Schema constraint violations
- Data format issues
Modules§
- optimized_
xml_ writer - High-performance XML writer optimized for DDEX Builder
- xml_
writer - XML serialization from AST
Structs§
- ASTGenerator
- AST generator for converting build requests to abstract syntax trees