Build xml / html / svg programatically using element building blocks. Instead of using a templating engine, write data/markup that 'looks like' rust.
Find it on github and crates.io.
Tagger also provides functionality to build svg paths and polyline attribute data.
```rust use tagger::prelude::*;
fn main() -> std::fmt::Result { use std::fmt::Write;
let width = 100.0;
let height = 100.0;
let w = &mut tagger::upgrade_write(std::io::stdout());
element!(
w,
"svg",
("xmlns", "http://www.w3.org/2000/svg"),
("viewBox", format_args!("0 0 {} {}", width, height))
)
.build(|w| {
single_element!(
w,
"rect",
("x1", 0),
("y1", 0),
("rx", 20),
("ry", 20),
("width", width),
("height", height),
("style", "fill:blue")
);
element!(w, "style")
.build(|w| write!(w, "{}", ".test{fill:none;stroke:white;stroke-width:3}"))?;
element!(w, "g", ("class", "test")).build(|w| {
for r in (0..50).step_by(10) {
single_element!(w, "circle", ("cx", 50.0), ("cy", 50.0), ("r", r));
}
Ok(())
})
})
}
```