Module analysis

Source
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§

AnalysisConfig
Configuration for script analysis
PerformanceSummary
Performance analysis summary
ScriptAnalysis
Comprehensive analysis of an ASS script
ScriptAnalysisOptions
Script analysis options