Module parser

Module parser 

Source
Expand description

ASS script parser module

Provides zero-copy parsing of ASS subtitle scripts with lifetime-generic AST nodes. Supports full ASS v4+, SSA v4 compatibility, and libass 0.17.4+ extensions.

§Performance

  • Target: <5ms parsing for typical 1KB scripts
  • Memory: ~1.1x input size via zero-copy spans
  • Incremental updates: <2ms for single-event changes

§Example

use ass_core::parser::Script;
use ass_core::CoreError;

let script_text = r#"
[Script Info]
Title: Example
ScriptType: v4.00+

[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)?;
assert_eq!(script.sections().len(), 2);

Re-exports§

pub use ast::Event;
pub use ast::ScriptInfo;
pub use ast::Section;
pub use ast::SectionType;
pub use ast::Style;
pub use errors::IssueCategory;
pub use errors::IssueSeverity;
pub use errors::ParseError;
pub use errors::ParseIssue;
pub use errors::ParseResult;
pub use script::Script;
pub use script::calculate_delta;stream
pub use script::ScriptDelta;stream
pub use script::ScriptDeltaOwned;stream
pub use streaming::build_modified_source;stream

Modules§

ast
AST (Abstract Syntax Tree) definitions for ASS scripts
binary_data
Binary data parsing for [Fonts] and [Graphics] sections
errors
Parser error types for ASS script parsing
incremental
Incremental parsing utilities for efficient text updates
main
Main parser coordination and dispatch logic
position_tracker
Position tracking utilities for incremental parsing
script
ASS script container with zero-copy lifetime-generic design
sections
Section-specific parsers for ASS script components.
streamingstream
Streaming and incremental parsing for ASS scripts