pub struct ScriptInfo<'a> {
pub fields: Vec<(&'a str, &'a str)>,
pub span: Span,
}
Expand description
Script Info section containing metadata and headers
Represents the [Script Info] section of an ASS file as key-value pairs with zero-copy string references. Provides convenient accessor methods for standard ASS metadata fields.
§Examples
use ass_core::parser::ast::{ScriptInfo, Span};
let fields = vec![("Title", "Test Script"), ("ScriptType", "v4.00+")];
let info = ScriptInfo { fields, span: Span::new(0, 0, 0, 0) };
assert_eq!(info.title(), "Test Script");
assert_eq!(info.script_type(), Some("v4.00+"));
Fields§
§fields: Vec<(&'a str, &'a str)>
Key-value pairs as zero-copy spans
span: Span
Span in source text where this script info section is defined
Implementations§
Source§impl<'a> ScriptInfo<'a>
impl<'a> ScriptInfo<'a>
Sourcepub fn get_field(&self, key: &str) -> Option<&'a str>
pub fn get_field(&self, key: &str) -> Option<&'a str>
Get field value by key (case-sensitive)
Searches for the specified key in the script info fields and returns the associated value if found.
§Arguments
key
- Field name to search for
§Returns
The field value if found, None
otherwise
§Examples
let fields = vec![("Title", "Test"), ("Author", "User")];
let info = ScriptInfo { fields, span: Span::new(0, 0, 0, 0) };
assert_eq!(info.get_field("Title"), Some("Test"));
assert_eq!(info.get_field("Unknown"), None);
Sourcepub fn title(&self) -> &str
pub fn title(&self) -> &str
Get script title, defaulting to <untitled>
Returns the “Title” field value or a default if not specified. This is a convenience method for the most commonly accessed field.
Sourcepub fn script_type(&self) -> Option<&'a str>
pub fn script_type(&self) -> Option<&'a str>
Get script type version
Returns the “ScriptType
” field which indicates the ASS version
and feature compatibility (e.g., “v4.00+”, “v4.00”).
Sourcepub fn play_resolution(&self) -> Option<(u32, u32)>
pub fn play_resolution(&self) -> Option<(u32, u32)>
Get play resolution as (width, height)
Parses PlayResX
and PlayResY
fields to determine the intended
video resolution for subtitle rendering.
§Returns
Tuple of (width, height) if both fields are present and valid,
None
if either field is missing or invalid.
Sourcepub fn layout_resolution(&self) -> Option<(u32, u32)>
pub fn layout_resolution(&self) -> Option<(u32, u32)>
Get layout resolution as (width, height)
Layout resolution defines the coordinate system for positioning and scaling subtitles relative to the video resolution. Used by style analysis for proper layout calculations.
§Returns
Tuple of (width, height) if both fields are present and valid,
None
if either field is missing or invalid.
Sourcepub fn wrap_style(&self) -> u8
pub fn wrap_style(&self) -> u8
Get wrap style setting
Returns the WrapStyle
field which controls how long lines are wrapped.
Defaults to 0 (smart wrapping) if not specified.
§Wrap Styles
- 0: Smart wrapping (default)
- 1: End-of-line wrapping
- 2: No wrapping
- 3: Smart wrapping with lower line longer
Sourcepub fn to_ass_string(&self) -> String
pub fn to_ass_string(&self) -> String
Convert script info to ASS string representation
Generates the [Script Info] section with all fields.
§Examples
let fields = vec![("Title", "Test Script"), ("ScriptType", "v4.00+")];
let info = ScriptInfo { fields, span: Span::new(0, 0, 0, 0) };
let ass_string = info.to_ass_string();
assert!(ass_string.contains("[Script Info]"));
assert!(ass_string.contains("Title: Test Script"));
assert!(ass_string.contains("ScriptType: v4.00+"));
Sourcepub fn validate_spans(&self, source_range: &Range<usize>) -> bool
pub fn validate_spans(&self, source_range: &Range<usize>) -> bool
Validate all spans in this ScriptInfo
reference valid source
Debug helper to ensure zero-copy invariants are maintained. Validates that all string references point to memory within the specified source range.
Only available in debug builds to avoid performance overhead.
Trait Implementations§
Source§impl<'a> Clone for ScriptInfo<'a>
impl<'a> Clone for ScriptInfo<'a>
Source§fn clone(&self) -> ScriptInfo<'a>
fn clone(&self) -> ScriptInfo<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more