Expand description
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