handlebars_misc_helpers/
uuid_helpers.rs

1use handlebars::{Context, Handlebars, Helper, HelperResult, Output, RenderContext};
2use uuid::Uuid;
3
4fn uuid_new_v4_fct(
5    _: &Helper,
6    _: &Handlebars,
7    _: &Context,
8    _: &mut RenderContext,
9    out: &mut dyn Output,
10) -> HelperResult {
11    out.write(Uuid::new_v4().to_string().as_str())?;
12    Ok(())
13}
14
15fn uuid_new_v7_fct(
16    _: &Helper,
17    _: &Handlebars,
18    _: &Context,
19    _: &mut RenderContext,
20    out: &mut dyn Output,
21) -> HelperResult {
22    out.write(Uuid::new_v4().to_string().as_str())?;
23    Ok(())
24}
25
26pub fn register(handlebars: &mut Handlebars) {
27    handlebars.register_helper("uuid_new_v4", Box::new(uuid_new_v4_fct));
28    handlebars.register_helper("uuid_new_v7", Box::new(uuid_new_v7_fct));
29}
30
31#[cfg(test)]
32mod tests {
33    use crate::assert_renders;
34    use std::error::Error;
35
36    #[test]
37    fn test_regex_captures() -> Result<(), Box<dyn Error>> {
38        assert_renders![
39            // (r##"{{ uuid_new_v4 }}"##, r##""##),
40            (r##"{{ len (uuid_new_v4) }}"##, r##"36"##),
41            // (r##"{{ uuid_new_v7 }}"##, r##""##),
42            (r##"{{ len( uuid_new_v7 )}}"##, r##"36"##),
43        ]
44    }
45}