Files
benilla-octo/crates/benilla-ui/src/lib.rs
T
SamandClaude Fable 5 37998deccf text justification becomes one law across every font table
- the justify verbs had been written three times and drifted three ways; one implementation now serves the region, font-object and message-frame tables, and a cleared axis paints centre, as the client's draw path really does
- MessageFrame and ScrollingMessageFrame gain the ten-verb font block they were missing entirely, so font calls on message frames stop raising
- EnableKeyboard and IsKeyboardEnabled land as real Frame methods — eight addons were dying on their absence
- the harness's METHODS ranking states its own limits instead of reading as a build queue

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 18:50:00 +07:00

35 lines
2.1 KiB
Rust

//! The engine-free core of benilla's UI engine (decision 0068): the WoW interface is data + a
//! runtime — TOC manifests, FrameXML documents, and Lua — and this crate owns everything about
//! that runtime which needs neither Bevy nor a GPU: parsing, template expansion, the anchor/layout
//! resolver, and the draw-order key. The Bevy side (rendering, input, the game-state API bindings)
//! lives in the app; the Lua VM is embedded by the app and calls back into this crate's model.
//!
//! Built currently: [`toc`] — the addon/FrameXML manifest parser; [`framexml`] — the FrameXML
//! document parser (order-preserving tree, template expansion, `$parent` substitution);
//! [`bindings_xml`] — the per-addon `Bindings.xml` parser (the third file format, feeding
//! [`script::keybind`]'s table); [`layout`]
//! — the anchor/layout resolver (anchor graph → resolved rects), transcribed bit-faithfully from
//! wow-5875-re's binary-verified spec; [`widget`] — the frame arena and its show/hide/strata/level/
//! scale/alpha propagation mutations; [`order`] — the strata/draw-layer vocabulary, the packed
//! total-order key, and the visible-tree traversal that realizes the client's painter order;
//! [`script`] — the engine-free Lua host (mlua 5.1) binding the arena/layout/order model to the
//! FrameScript object model + WoW stdlib so FrameXML/addon Lua runs against it (decision 0068);
//! [`loader`] — the FrameXML loader that joins the two, walking a parsed document to materialize live
//! frames in a running [`script::UiScript`] by driving the object model exactly as an addon does;
//! [`markup`] — the single owner of WoW's inline-markup grammar (`|cAARRGGBB`, `|H…|h…|h`, `|n`,
//! `||`): the client's token decoder and the per-byte class map its cursor law is built on;
//! [`source`] — what a UI source file *is* before any parser sees it: bytes, BOM-stripped, decoded
//! to text only where a Rust parser forces it (decision 1193).
pub mod bindings_xml;
pub mod framexml;
pub mod justify;
pub mod layout;
pub mod loader;
pub mod markup;
pub mod order;
pub mod script;
pub mod source;
pub mod toc;
pub mod widget;