Skip to main content

HandlerPlugin

Trait HandlerPlugin 

Source
pub trait HandlerPlugin {
Show 13 methods // 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<()> { ... } fn emit_templates( &self, protocol: &WebUIProtocol, components: &HashSet<String>, _nonce: Option<&str>, 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.

Source

fn emit_templates( &self, protocol: &WebUIProtocol, components: &HashSet<String>, _nonce: Option<&str>, writer: &mut dyn ResponseWriter, ) -> Result<()>

Emit component templates collected during SSR. The default emits each template as-is (suitable for FAST <f-template> tags). The WebUI plugin overrides this to wrap all raw JS IIFE templates in a single <script> tag.

Implementors§