Module plugin

Module plugin 

Source
Available on crate feature plugins only.
Expand description

Plugin system for extending ASS parsing and rendering capabilities.

This module provides a trait-based extension system allowing custom tag handlers, section processors, and rendering backends to be registered at runtime. Designed for zero-allocation hot paths and efficient lookup via optimized hash maps.

§Architecture

  • TagHandler: Process custom override tags (e.g., {\custom})
  • SectionProcessor: Handle non-standard sections (e.g., [Aegisub Project])
  • ExtensionRegistry: Central registry for all extensions

§Example

use ass_core::plugin::{ExtensionRegistry, TagHandler, TagResult};

struct CustomColorTag;

impl TagHandler for CustomColorTag {
    fn name(&self) -> &'static str { "customcolor" }

    fn process(&self, args: &str) -> TagResult {
        // Custom color processing logic
        TagResult::Processed
    }
}

let mut registry = ExtensionRegistry::new();
registry.register_tag_handler(Box::new(CustomColorTag));

Re-exports§

pub use sections::aegisub::create_aegisub_processors;
pub use sections::aegisub::AegisubExtradataProcessor;
pub use sections::aegisub::AegisubProjectProcessor;
pub use tags::advanced::create_advanced_handlers;
pub use tags::advanced::BlurEdgesTagHandler;
pub use tags::advanced::BorderTagHandler;
pub use tags::advanced::ShadowTagHandler;
pub use tags::alignment::create_alignment_handlers;
pub use tags::alignment::AlignmentTagHandler;
pub use tags::alignment::NumpadAlignmentTagHandler;
pub use tags::alignment::WrappingStyleTagHandler;
pub use tags::animation::create_animation_handlers;
pub use tags::animation::FadeTagHandler;
pub use tags::animation::SimpleFadeTagHandler;
pub use tags::animation::TransformTagHandler;
pub use tags::clipping::create_clipping_handlers;
pub use tags::clipping::ClipTagHandler;
pub use tags::color::create_color_handlers;
pub use tags::color::Alpha1TagHandler;
pub use tags::color::Alpha2TagHandler;
pub use tags::color::Alpha3TagHandler;
pub use tags::color::Alpha4TagHandler;
pub use tags::color::AlphaTagHandler;
pub use tags::color::Color1TagHandler;
pub use tags::color::Color2TagHandler;
pub use tags::color::Color3TagHandler;
pub use tags::color::Color4TagHandler;
pub use tags::color::PrimaryColorTagHandler;
pub use tags::font::create_font_handlers;
pub use tags::font::FontEncodingTagHandler;
pub use tags::font::FontNameTagHandler;
pub use tags::font::FontSizeTagHandler;
pub use tags::formatting::create_formatting_handlers;
pub use tags::formatting::BoldTagHandler;
pub use tags::formatting::ItalicTagHandler;
pub use tags::formatting::StrikeoutTagHandler;
pub use tags::formatting::UnderlineTagHandler;
pub use tags::karaoke::create_karaoke_handlers;
pub use tags::karaoke::BasicKaraokeTagHandler;
pub use tags::karaoke::FillKaraokeTagHandler;
pub use tags::karaoke::KaraokeTimingTagHandler;
pub use tags::karaoke::OutlineKaraokeTagHandler;
pub use tags::misc::create_misc_handlers;
pub use tags::misc::OriginTagHandler;
pub use tags::misc::ResetTagHandler;
pub use tags::misc::ShortRotationTagHandler;
pub use tags::position::create_position_handlers;
pub use tags::position::MoveTagHandler;
pub use tags::position::PositionTagHandler;
pub use tags::special::create_special_handlers;
pub use tags::special::HardLineBreakTagHandler;
pub use tags::special::HardSpaceTagHandler;
pub use tags::special::SoftLineBreakTagHandler;
pub use tags::transform::create_transform_handlers;
pub use tags::transform::RotationXTagHandler;
pub use tags::transform::RotationYTagHandler;
pub use tags::transform::RotationZTagHandler;
pub use tags::transform::ScaleXTagHandler;
pub use tags::transform::ScaleYTagHandler;
pub use tags::transform::ShearXTagHandler;
pub use tags::transform::ShearYTagHandler;
pub use tags::transform::SpacingTagHandler;

Modules§

sections
ASS section processors for the plugin system
tags
ASS override tag handlers for the plugin system

Structs§

ExtensionRegistry
Central registry for all ASS format extensions

Enums§

PluginError
Errors that can occur during plugin operations
SectionResult
Result of section processing operations
TagResult
Result of tag processing operations

Traits§

SectionProcessor
Trait for handling custom ASS sections
TagHandler
Trait for handling custom ASS override tags

Type Aliases§

Result
Result type for plugin operations