#handlebars #helper #concat #join #implode

handlebars-concat

Handlebars 字符串、数组和对象连接助手

11 个版本

0.3.0 2024年7月29日
0.2.1 2024年2月1日
0.1.6 2024年7月29日
0.1.3 2023年12月30日
0.1.2 2023年10月6日

#108模板引擎

Download history 2/week @ 2024-04-15 8/week @ 2024-06-24 32/week @ 2024-07-15 23/week @ 2024-07-22 361/week @ 2024-07-29

每月下载量 416
用于 ctgen

BSD-2-Clause

24KB
269

Crates.io API dependency status build and test codecov

handlebars-concat

handlebars-rust 的字符串、数组和对象连接助手 handlebars-rust

快速入门

与 handlebars-rust v4.4.0 开发和测试。
版本 0.1.* 与 handlebars 4 兼容。
版本 0.2.* 与 handlebars 5 兼容。 (感谢 campeis) 版本 0.3.* 与 handlebars 6 兼容。

注册

    use handlebars::Handlebars;
    use handlebars_concat::HandlebarsConcat;
    
    let mut h = Handlebars::new();
    h.register_helper("concat", Box::new(HandlebarsConcat));

行为

该助手寻找多个字符串、数组或对象类型的参数。参数被添加到输出缓冲区并作为字符串返回。

该助手有一些参数可以稍微修改其行为。例如,distinct=true 从输出缓冲区中删除重复值,而 quotes=true 结合 single_quote=true 将值用引号括起来。更多信息请见 参数

字符串

字符串参数直接添加到输出缓冲区。
0.1.3 版本开始,字符串可以以两种方式处理

  1. 默认情况下,字符串会添加到输出缓冲区而不会修改(除了引号修饰符)。
  2. 如果您添加了一个块模板并使用 render_all 参数,字符串将作为 {{this}} 传递给块模板。

默认情况下禁用块模板渲染以保持向后兼容。

数组

数组参数会被迭代,并作为单个字符串添加到输出缓冲区。
截至 0.1.3 数组可以以两种方式之一进行处理

  1. 默认情况下,数组值作为单独的字符串添加到输出缓冲区,不进行修改(除了引号修饰符)。
  2. 如果您添加了一个块模板并使用了 render_all 参数,数组值将以 {{this}} 的形式传递到块模板。

默认情况下禁用块模板渲染以保持向后兼容。

对象

对象参数可以以两种不同的方式处理

  1. 默认情况下,只使用对象键,而值被忽略。
  2. 如果您添加了一个块模板,辅助工具将使用它来渲染对象值并将
    将其作为字符串连接到输出缓冲区。

对象渲染结果受 distinctquotessingle_quote 修饰符参数的影响,就像字符串和数组一样。

参数

辅助工具接受几个哈希参数来修改连接行为

  • separator:设置特定字符串以连接元素。默认为 ","
  • distinct:在添加到输出缓冲区时消除重复项
  • quotes:将每个值用双引号包裹
  • single_quotequotes 的修饰符,用于切换到单引号
  • render_all:使用块模板渲染所有值,而不仅仅是对象值

示例

字符串字面量示例

{{concat "One" "Two" separator=", "}}

结果:One, Two


{{concat "One" "Two" separator=", " quotes=true}}

结果:"One", "Two"


其中 s"One"arr["One", "Two"],而 obj{"Three":3}

{{concat s arr obj separator=", " distinct=true}}

结果:One, Two, Three


其中 s"One"arr["One", "Two"],而 obj{"key0":{"label":"Two"},"key1":{"label":"Three"},"key2":{"label":"Four"}}

{{#concat s arr obj separator=", " distinct=true}}{{label}}{{/concat}}

结果:One, Two, Three, Four


其中 s"One"arr["One", "Two"],而 obj{"key0":{"label":"Two"},"key1":{"label":"Three"},"key2":{"label":"Four"}}

{{#concat s arr obj separator=", " distinct=true render_all=true}}<{{#if label}}{{label}}{{else}}{{this}}{{/if}}/>{{/concat}}

结果:<One/>, <Two/>, <Three/>, <Four/>


许可证

此库(handlebars-concat)在BSD 2许可证下开源。

依赖项

~2.8–4MB
~80K SLoC