Available on crate feature
analysis only.Expand description
ASS script style analysis and resolution
Provides comprehensive style analysis capabilities including inheritance resolution, conflict detection, performance analysis, and validation. Designed for zero-copy efficiency with lifetime-generic references to original style definitions.
§Features
- Style Resolution: Compute effective styles from base definitions and overrides
- Inheritance Analysis: Track style inheritance chains and detect circular references
- Conflict Detection: Identify duplicate names, missing references, and conflicts
- Performance Assessment: Analyze rendering complexity and optimization opportunities
- Validation: Check property values, font availability, and spec compliance
- Zero-Copy Design: Minimal allocations via lifetime-generic spans
§Performance Targets
- Style resolution: <1ms for typical scripts
- Memory usage: ~200 bytes per resolved style
- Analysis: <2ms for complete script style analysis
- Caching: Efficient resolution with zero-copy references
§Quick Start
use ass_core::analysis::styles::{StyleAnalyzer, ResolvedStyle};
use ass_core::parser::Script;
let script_text = r#"
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,1
"#;
let script = Script::parse(script_text)?;
let analyzer = StyleAnalyzer::new(&script);
if let Some(resolved) = analyzer.resolve_style("Default") {
println!("Font: {}, Size: {}", resolved.font_name(), resolved.font_size());
println!("Complexity: {}/100", resolved.complexity_score());
println!("Performance issues: {}", resolved.has_performance_issues());
}
// Validate all styles
let issues = analyzer.validate_styles();
for issue in issues {
println!("{}: {} in {}", issue.severity, issue.message, issue.field);
}
// Check for conflicts
for conflict in analyzer.conflicts() {
println!("Conflict: {}", conflict.description);
}§Module Organization
resolved_style- Fully resolved style representation with computed valuesvalidation- Style validation, conflict detection, and issue reportinganalyzer- Main analysis interface orchestrating all style operations
Re-exports§
pub use analyzer::PerformanceThresholds;pub use analyzer::StyleAnalysisConfig;pub use analyzer::StyleAnalyzer;pub use resolved_style::ResolvedStyle;pub use validation::ConflictType;pub use validation::StyleConflict;pub use validation::StyleInheritance;pub use validation::StyleValidationIssue;pub use validation::ValidationSeverity;
Modules§
- analyzer
- Style analyzer for comprehensive ASS script style analysis
- resolved_
style - Resolved style representation with computed values and metrics
- validation
- Style validation and conflict detection for ASS subtitle styles