Crates.io | asai |
lib.rs | asai |
version | 0.1.2 |
source | src |
created_at | 2023-07-26 08:56:40.295415 |
updated_at | 2023-08-01 21:17:59.573404 |
description | Library for .ass file parsing. |
homepage | |
repository | https://github.com/nikit4v/asai |
max_upload_size | |
id | 926294 |
size | 38,344 |
A rust library for parsing .ass files, which are used for storing subtitles in the Advanced SubStation Alpha format.
Add this to your Cargo.toml:
[dependencies]
asai = "0.1.0"
If you want to simply parse ass, you can use parse_str from asai's root:
use asai::structure::Ass;
fn main() {
let data = "...";
let ass = asai::parse_str(data);
println!("{:?}", ass.styles); // Get styles
println!("{:?}", ass.info); // Get info
println!("{:?}", ass.events); // Get events
}
Another approach is to use custom structure to represent ass. It allows us to set defaults and parse only required fields. There is an example:
use asai_macro::FromLine;
use asai::structure::event::EventKey;
use asai::structure::Ass;
#[derive(FromLine, Debug)]
struct MyEvent<'a> {
#[name("Text")]
text: &'a str,
#[name("Custom")]
#[default("Some default value")]
custom_field: &'a str
}
fn main() {
let data = "...";
let my_events: FormattedSection<EventKey, MyEvent> = Ass::parse_section("Events", data).unwrap();
}