Something went wrong. Try again.
Streamplace AtmosphereConf 2026 VOD JAM
Something went wrong. Try again.
README.md
ass-core #
ASS (Advanced SubStation Alpha) subtitle format parser and analyzer for Rust.
Features #
- Zero-copy parsing: Lifetime-generic AST with minimal allocations
- ASS v4+ support: Compatibility with libass and Aegisub
- Script analysis: Style resolution, linting, and event analysis
Quick Start #
Add to your Cargo.toml:
[dependencies]
ass-core = { version = "0.1", features = ["analysis"] }
Basic usage:
use ass_core::parser::Script;
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)?;
println!("Parsed {} sections", script.sections().len());
Advanced Usage #
Script Analysis #
use ass_core::analysis::ScriptAnalysis;
let analysis = ScriptAnalysis::analyze(&script)?;
println!("Found {} dialogue events", analysis.dialogue_info().len());
Linting #
use ass_core::analysis::linting::{lint_script, LintConfig};
let config = LintConfig::default();
let issues = lint_script(&script, &config)?;
for issue in issues {
println!("{}: {}", issue.severity(), issue.message());
}
Feature Flags #
std(default): Standard library supportanalysis: Script analysis and lintingplugins: Extension registry supportserde: Serialization support
Architecture #
parser: Core ASS parsing with zero-copy ASTanalysis: Script analysis and lintingutils: Common utilities and error types
Compatibility #
- ASS v4.00+: Full support including advanced features
- SSA v4: Legacy compatibility
- libass extensions: Renderer-specific feature support
- Aegisub: Aegisub-specific feature support
License #
Licensed under the MIT license.
Contributing #
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.