#html-xml #xml #svg #markup #html #tags

tagger

通过编程方式编写SVG / HTML / XML

33个版本 (15个稳定版)

4.3.5 2023年7月8日
4.3.4 2022年11月26日
4.3.3 2022年3月18日
3.3.2 2021年12月31日
0.7.1 2021年3月8日

#201 in 编码

Download history 592/week @ 2024-03-13 302/week @ 2024-03-20 1256/week @ 2024-03-27 976/week @ 2024-04-03 526/week @ 2024-04-10 651/week @ 2024-04-17 681/week @ 2024-04-24 1024/week @ 2024-05-01 1023/week @ 2024-05-08 1395/week @ 2024-05-15 456/week @ 2024-05-22 669/week @ 2024-05-29 551/week @ 2024-06-05 430/week @ 2024-06-12 311/week @ 2024-06-19 471/week @ 2024-06-26

1,866 monthly downloads
用于 4 个crate(2个直接使用)

MIT许可证

17KB
342

在尝试之前

我建议您使用tagu crate而不是此crate。

概述

使用元素构建块编程构建xml / html / svg。无需使用模板引擎,编写类似于rust的数据/标记。

githubcrates.io上找到它。文档在docs.rs

Tagger还提供构建svg路径和多段线属性数据的功能。

Tagger还通过将xml转义字符替换为其编码值来防止xml转义。

示例

fn main() -> std::fmt::Result {
    let width = 100.0;
    let height = 100.0;

    let mut w = tagger::new(tagger::upgrade_write(std::io::stdout()));

    w.elem("svg", |d| {
        d.attr("xmlns", "http://www.w3.org/2000/svg")?;
        d.attr("viewBox", format_args!("0 0 {} {}", width, height))
    })?
    .build(|w| {
        w.single("rect", |d| {
            d.attr("x1", 0)?;
            d.attr("y1", 0)?;
            d.attr("rx", 20)?;
            d.attr("ry", 20)?;
            d.attr("width", width)?;
            d.attr("height", height)?;
            d.attr("style", "fill:blue")
        })?;

        w.elem("style", tagger::no_attr())?
            .build(|w| w.put_raw(".test{fill:none;stroke:white;stroke-width:3}"))?;

        w.elem("g", |d| d.attr("class", "test"))?.build(|w| {
            for r in (0..50).step_by(10) {
                w.single("circle", |w| {
                    w.attr("cx", 50.0)?;
                    w.attr("cy", 50.0)?;
                    w.attr("r", r)
                })?;
            }
            Ok(())
        })
    })
}

输出

demo

无运行时依赖