Available on crate feature
analysis only.Expand description
Script analysis and linting for ASS subtitle scripts
Provides comprehensive analysis capabilities including style resolution, linting for common issues, and performance optimization suggestions. Designed for editor integration and script validation.
§Features
- Style resolution: Compute effective styles from base + overrides
- Linting rules: Detect common problems and spec violations
- Performance analysis: Identify rendering bottlenecks
- Unicode handling: Bidirectional text and linebreak analysis
- Timing validation: Overlap detection and duration checks
§Performance
- Target: <2ms analysis for typical scripts
- Memory: Lazy evaluation to avoid allocation spikes
- Thread-safe: Immutable analysis results
§Example
use ass_core::{Script, analysis::ScriptAnalysis};
let script_text = r#"
[Script Info]
Title: Test
[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
[Events\]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Hello World!
"#;
let script = Script::parse(script_text)?;
let analysis = ScriptAnalysis::analyze(&script)?;
// Check for issues
for issue in analysis.lint_issues() {
println!("Warning: {}", issue.message());
}
// Get resolved styles
if let Some(style) = analysis.resolve_style("Default") {
println!("Font: {}", style.font_name());
}Re-exports§
pub use events::count_overlapping_dialogue_events;pub use events::count_overlapping_events;pub use events::find_overlapping_dialogue_events;pub use events::find_overlapping_events;pub use events::DialogueInfo;pub use linting::lint_script;pub use linting::LintConfig;pub use linting::LintIssue;pub use linting::LintRule;pub use styles::ResolvedStyle;pub use styles::StyleAnalyzer;
Modules§
- events
- ASS dialogue event analysis and processing
- linting
- Linting and validation for ASS subtitle scripts.
- styles
- ASS script style analysis and resolution
Structs§
- Analysis
Config - Configuration for script analysis
- Performance
Summary - Performance analysis summary
- Script
Analysis - Comprehensive analysis of an ASS script
- Script
Analysis Options - Script analysis options