Enum ScriptVersion

Source
pub enum ScriptVersion {
    SsaV4,
    AssV4,
    AssV4Plus,
}
Expand description

Supported ASS script versions for compatibility and feature detection.

ASS scripts can declare different versions that affect parsing behavior and available features. This enum helps determine which parsing mode to use and which features are available.

§Examples

use ass_core::ScriptVersion;

// Parse from header
let version = ScriptVersion::from_header("v4.00+").unwrap();
assert_eq!(version, ScriptVersion::AssV4);

// Check feature support
assert!(!ScriptVersion::SsaV4.supports_extensions());
assert!(ScriptVersion::AssV4Plus.supports_extensions());

Variants§

§

SsaV4

SSA v4.00 (SubStation Alpha legacy format).

Provides compatibility with legacy SSA files. Limited feature set compared to modern ASS versions.

§

AssV4

ASS v4.00+ (Advanced SubStation Alpha standard).

The most common format used by modern subtitle tools. Supports all standard ASS features and tags.

§

AssV4Plus

ASS v4.00+ with extensions (libass 0.17.4+ compatibility).

Extended format supporting newer features like \kt karaoke tags, Unicode line wrapping, and other libass extensions.

Implementations§

Source§

impl ScriptVersion

Source

pub fn from_header(header: &str) -> Option<Self>

Parse script version from a ScriptType header value.

Converts header strings commonly found in [Script Info] sections to the appropriate script version enum. Handles various formats including extended versions.

§Arguments
  • header - The header value string (usually from ScriptType field)
§Returns

Returns Some(ScriptVersion) if the header is recognized, or None if the version string is invalid or unsupported.

§Examples
use ass_core::ScriptVersion;

assert_eq!(ScriptVersion::from_header("v4.00"), Some(ScriptVersion::SsaV4));
assert_eq!(ScriptVersion::from_header("v4.00+"), Some(ScriptVersion::AssV4));
assert_eq!(ScriptVersion::from_header("v4.00++"), Some(ScriptVersion::AssV4Plus));
assert_eq!(ScriptVersion::from_header("invalid"), None);
Source

pub const fn supports_extensions(self) -> bool

Check if the script version supports modern ASS extensions.

Modern ASS extensions include features like:

  • \kt karaoke timing tags
  • Unicode line wrapping
  • Extended color formats
  • Advanced animation features

Only AssV4Plus currently supports these extensions, as they require libass 0.17.4+ compatibility.

§Returns

Returns true if the version supports extensions, false otherwise.

§Examples
use ass_core::ScriptVersion;

assert!(!ScriptVersion::SsaV4.supports_extensions());
assert!(!ScriptVersion::AssV4.supports_extensions());
assert!(ScriptVersion::AssV4Plus.supports_extensions());

Trait Implementations§

Source§

impl Clone for ScriptVersion

Source§

fn clone(&self) -> ScriptVersion

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ScriptVersion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for ScriptVersion

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for ScriptVersion

Source§

fn eq(&self, other: &ScriptVersion) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ScriptVersion

Source§

impl Eq for ScriptVersion

Source§

impl StructuralPartialEq for ScriptVersion

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.