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}