Crate dom_renderer

Source
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