Crate htmlify[−][src]
Expand description
Trait used to generate HTML from Rust structures
It contains the following optional definitions:
ⓘ
// Defaults to an empty string
fn tag(&self) -> Cow<'static, str>;
// Defaults to empty vec
fn attributes(&self) -> Vec<Attribute>;
// Defaults to empty vec
fn inner_html(&self) -> Vec<Box<dyn Htmlify>>;
// Calls `as_raw_html` for each of the items returned by `inner_html`
fn inner_html_as_string(&self) -> String;
as well as the following definition which should not need to be implemented, but may on occasion be useful to be overridden:
ⓘ
fn as_raw_html(&self) -> String
{
format!
(
"<{0} {2}> {1} </{0}>",
self.tag(),
self.inner_html_as_string(),
self.attributes()
.iter()
.map(Attribute::to_string)
.collect::<Vec<String>>()
.join(" ")
)
}
Finally, the following may be called to get a structured js_sys type:
ⓘ
fn as_element(&self) -> Option<web_sys::Element>;
There are 3 other tools included in this crate:
- An
Htmlify
implementation for&str
. This is a special case which simply returns the string itself whenas_raw_html
is called, and returnsNone
whenas_element
is called. This is so text-content “leaves” can be represented. - An
Attribute
struct to store key-value pairs as strings, used specifically for element attributes. These useCow<'static, str>
to leave optimization details up to the implementor. - An
append_to_document_body
function which takes anyimpl Htmlify
and attempts to append it to the document body (through web_sys calls). This is here purely for convenience.
Structs
HTML Attribute wrapper, a simple key-value string pair
Traits
Trait used to generate HTML from Rust structures. See module-level documentation for more details.
Functions
Helper function which appends some impl Htmlify
to the web_sys document
body. Combined with the rest of this crate, may be used to generate the entire
HTML body in arbitrary Rust-driven ways.