Skip to main content

html/
html.rs

1use packo::{IDX, Packo};
2
3pub type Document = Packo<1024, Tag>;
4
5pub struct Tag {
6    name: &'static str,
7    text: &'static str,
8}
9
10#[rustfmt::skip]
11fn main() {
12    let mut doc = Document::default();
13
14    let html = doc.insert(Tag { name: "html", text: "" });
15    let body = doc.nest(html, Tag{ name: "body", text: "" });
16    let p1 = doc.nest(body, Tag{ name: "p", text: "first line" }); 
17    let _p2 = doc.append(p1, Tag{ name: "p", text: "second line" }); 
18
19    print(&doc, html);
20    println!();
21}
22
23fn print(d: &Document, i: IDX) {
24    print!("<{}>", d[i].name);
25    let s = d.child(i);
26    let mut c = s;
27    while c != 0 {
28        print(d, c);
29        c = d.next(c);
30        if c == s {
31            break;
32        }
33    }
34    print!("{}", d[i].text);
35    print!("</{}>", d[i].name);
36}