[−][src]Crate dom_renderer
Utilities for generating html (or other DOM) strings
Example
A simple html page can be created by following codes:
use dom_renderer::*; let html = html_basic!( title: "Page Title", body: end_elem!("h1"; "Section"), end_elem!("p"; "Text goes here..."), ); assert_eq!(r#"<!DOCTYPE html><html><head><meta charset="utf-8"><title>Page Title</title></head><body><h1>Section</h1><p>Text goes here...</p></body></html>"#, html.render()); let th = elem!("tr"; end_elem!("th"; "Item1"), end_elem!("th"; "Item2"), end_elem!("th"; "Item3"), ); let tr1 = elem!("tr"; end_elem!("td"; "value 11"), end_elem!("td"; "value 12"), end_elem!("td"; "value 13"), ); let tr2 = elem!("tr"; end_elem!("td"; "value 21"), end_elem!("td"; "value 22"), end_elem!("td"; "value 23"), ); let tbl = elem!("table"; ("border", "1"); th, tr1, tr2); assert_eq!(r#"<table border="1"><tr><th>Item1</th><th>Item2</th><th>Item3</th></tr><tr><td>value 11</td><td>value 12</td><td>value 13</td></tr><tr><td>value 21</td><td>value 22</td><td>value 23</td></tr></table>"#, tbl.render());
DOM Nodes are represented by enum DomNode
, which can be created by macros.
Child nodes can be changed using as_XXX() methods.
use dom_renderer::*; let mut tbl = elem!("table"); let tbl_elem = tbl.as_elem_mut()?; tbl_elem.attributes.push(("border", String::from("1"))); // header let mut tr = elem!("tr"); let headers = (1..=3) .map(|i| format!("Item{}", i)) .map(|x| end_elem!("th"; x)) .collect(); tr.as_elem_mut()?.child_nodes = headers; tbl_elem.child_nodes.push(tr); // data for i in 1..=2 { let mut tr = elem!("tr"); let data = (1..=3) .map(|j| format!("value {}{}", i, j)) .map(|x| end_elem!("td"; x)) .collect(); tr.as_elem_mut()?.child_nodes = data; tbl_elem.child_nodes.push(tr); } assert_eq!(r#"<table border="1"><tr><th>Item1</th><th>Item2</th><th>Item3</th></tr><tr><td>value 11</td><td>value 12</td><td>value 13</td></tr><tr><td>value 21</td><td>value 22</td><td>value 23</td></tr></table>"#, tbl.render());
Re-exports
pub use doc_type::DomDocType; |
pub use document::DomDocument; |
pub use element::DomElem; |
pub use element::DomEmptyElem; |
pub use macros::*; |
pub use DomNode::*; |
Modules
doc_type | provides DOM DocumentType |
document | provides DOM Document (root node) |
element | provides DOM Elements |
macros | provides macros to create DOM Eelement instances |
Macros
doctype | creates DOM DocumentType |
domdoc | creates DOM Document |
domtxt | creates DOM Text Node |
elem | creates DOM Element |
empty | creates DOM Empty Element |
end_elem | crates DOM Element that have a single text node. |
html | creates HTML Document contains DocumenType and HTML element |
html_basic | creates HTML Document contains DocumenType and HTML element |
Enums
DomNode | Node types |
Traits
Render | Render recursive elements to String instance |