Skip to main content

HandlerPlugin

Trait HandlerPlugin 

Source
pub trait HandlerPlugin {
    // Required methods
    fn push_scope(&mut self);
    fn pop_scope(&mut self);
    fn on_binding_start(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()>;
    fn on_binding_end(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()>;
    fn on_repeat_item_start(
        &mut self,
        index: usize,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()>;
    fn on_repeat_item_end(
        &mut self,
        index: usize,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()>;
    fn on_element_data(
        &mut self,
        data: &[u8],
        writer: &mut dyn ResponseWriter,
    ) -> Result<()>;

    // Provided methods
    fn on_for_start(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()> { ... }
    fn on_for_end(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()> { ... }
    fn on_if_start(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()> { ... }
    fn on_if_end(
        &mut self,
        name: &str,
        writer: &mut dyn ResponseWriter,
    ) -> Result<()> { ... }
    fn write_route_component_state(
        &self,
        _state: &Value,
        _writer: &mut dyn ResponseWriter,
    ) -> Result<()> { ... }
}
Expand description

A handler plugin that can inject additional content during rendering.

Plugins receive callbacks at key points in the rendering lifecycle:

  • Scope management: push_scope / pop_scope for component and loop boundaries
  • Binding lifecycle: on_binding_start / on_binding_end around signals
  • For-loop lifecycle: on_for_start / on_for_end around for-loop blocks
  • If-condition lifecycle: on_if_start / on_if_end around if-condition blocks
  • Repeat items: on_repeat_item_start / on_repeat_item_end per for-loop item
  • Element data: on_element_data for parser-produced hydration metadata
  • Route state: write_route_component_state for framework-specific opening-tag attributes

WebUI does not interpret what plugins write — it just calls the hooks. Each framework defines its own marker format.

Required Methods§

Source

fn push_scope(&mut self)

Enter a new scope (component or for-loop item boundary). Typically resets per-scope counters.

Source

fn pop_scope(&mut self)

Exit the current scope, restoring the parent scope state.

Source

fn on_binding_start( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called before rendering a signal binding.

Source

fn on_binding_end( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called after rendering a signal binding.

Source

fn on_repeat_item_start( &mut self, index: usize, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called before rendering a repeat item in a for loop.

Source

fn on_repeat_item_end( &mut self, index: usize, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called after rendering a repeat item.

Source

fn on_element_data( &mut self, data: &[u8], writer: &mut dyn ResponseWriter, ) -> Result<()>

Called when parser-produced element metadata is encountered.

Provided Methods§

Source

fn on_for_start( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called before rendering a for-loop block. Defaults to on_binding_start.

Source

fn on_for_end( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called after rendering a for-loop block. Defaults to on_binding_end.

Source

fn on_if_start( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called before rendering an if-condition block. Defaults to on_binding_start.

Source

fn on_if_end( &mut self, name: &str, writer: &mut dyn ResponseWriter, ) -> Result<()>

Called after rendering an if-condition block. Defaults to on_binding_end.

Source

fn write_route_component_state( &self, _state: &Value, _writer: &mut dyn ResponseWriter, ) -> Result<()>

Called when emitting a matched route component’s opening tag. Plugins can write framework-specific attributes before the closing >. The default is a no-op.

Implementors§