Unified token-tree transformer for Lavash templates.
This module implements Lavash.TokenTransformer to handle all compile-time
template transformations at the tree level:
data-lavash-*attributes on HTML elements (for JS hooks/optimistic updates)__lavash_client_bindings__on component calls (for binding chain propagation)<span data-lavash-display>wrapping of bare{@field}expressions
Tree shape (LV 1.2)
Nodes:
{:block, type, name, attrs, children, open_meta, close_meta}—typeis:tag|:local_component|:remote_component|:slot{:self_close, type, name, attrs, meta}— void/self-closing tags{:text, content, meta}{:body_expr, code, meta}—{...}inline expression{:eex, code, meta}—<%= ... %>expression{:eex_block, code, clauses, meta}—<%= if x do %>...<% end %>where each clause is{children, end_code, meta}{:eex_comment, content, meta}
Attributes (per node):
{name, attr_value, meta}whereattr_valueis{:expr, code, meta}|{:string, content, meta}|nil- or
{:root, {:expr, code, meta}, meta}for<div {@spread}>
Usage
Lavash.TagEngine.compile_from_tokens(parsed,
token_transformer: Lavash.Template.TokenTransformer,
lavash_metadata: %{...}
)