#string #run-time #template

new_string_template

Rust的简单可定制字符串模板库

10个稳定版本

1.5.3 2024年8月2日
1.5.1 2024年4月6日
1.4.0 2022年8月30日
1.3.1 2022年5月26日
1.0.0 2021年5月28日

#22模板引擎

Download history 5030/week @ 2024-04-26 6694/week @ 2024-05-03 11420/week @ 2024-05-10 16182/week @ 2024-05-17 10233/week @ 2024-05-24 10348/week @ 2024-05-31 10214/week @ 2024-06-07 11084/week @ 2024-06-14 9045/week @ 2024-06-21 6885/week @ 2024-06-28 7629/week @ 2024-07-05 7899/week @ 2024-07-12 10633/week @ 2024-07-19 7377/week @ 2024-07-26 10244/week @ 2024-08-02 7285/week @ 2024-08-09

36,667 每月下载量
用于 3 crates

MIT 协议

29KB
356

新字符串模板

Rust的简单可定制字符串模板库。

本库受 string_template 启发。

用法

将以下内容添加到您的 Cargo.toml(或使用 cargo-add

[dependencies]
new_string_template = "1.5"

包含2个数据点的示例(启用fail)

use new_string_template::template::Template;
use std::collections::HashMap;

fn main() {
    let templ_str = "Something {data1} be {data2}, and { not here }";
    let templ = Template::new(templ_str);
    let data = {
        let mut map = HashMap::new();
        map.insert("data1", "should");
        map.insert("data2", "here");
        map
    };

    let rendered = templ.render(&data).expect("Expected Result to be Ok");
    assert_eq!("Something should be here, and { not here }", rendered);
}

包含1个数据点的示例(禁用fail)

use new_string_template::template::Template;
use std::collections::HashMap;

fn main() {
    let templ_str = "Something {data1} be {data2}, and { not here }";
    let templ = Template::new(templ_str);
    let data = {
        let mut map = HashMap::new();
        map.insert("data1", "should");
        // map.insert("data2", "here");
        map
    };

    let rendered = templ.render_nofail(&data);
    assert_eq!("Something should be {data2}, and { not here }", rendered);
}

包含自定义正则表达式的示例

use new_string_template::template::Template;
use std::collections::HashMap;
use regex::Regex;

fn main() {
    // The following regex requires at least one space between "{{" and "}}" and allows variables with spaces
    let custom_regex = Regex::new(r"(?mi)\{\{\s+([^\}]+)\s+\}\}").unwrap();
    let templ_str = "Something {{ data1 }} be {{ data2 }}, and {{ data 3 }}";
    let templ = Template::new(templ_str).with_regex(&custom_regex);
    let data = {
        let mut map = HashMap::new();
        map.insert("data1", "should");
        map.insert("data2", "here");
        map.insert("data 3", "here too");
        map
    };

    let rendered = templ.render_nofail(&data);
    assert_eq!("Something should be here, and here too", rendered);
}

注意:使用默认正则表达式时,模板变量可以有空白或没有。

本项目正在开发中

本项目需要

  • 安装Rust并配置 rustfmtclippy(nightly版本),请参阅 fmt.shclippy.sh

依赖项

~2–3MB
~53K SLoC