diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 10:12:52 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 11:01:07 +0100 |
commit | 0d21b32431da044b87d937e4803c7399ad5eae93 (patch) | |
tree | a4efecb2a20e3bc1bb6d9b0c4d6d42d3a5e41ca2 | |
parent | da620df345c2194100af338412da3ada211e18d6 (diff) |
Add IndentionHelper for handlebars templating
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | lib/etc/libimaginteraction/src/format.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/etc/libimaginteraction/src/format.rs b/lib/etc/libimaginteraction/src/format.rs index a21294ad..0f38257e 100644 --- a/lib/etc/libimaginteraction/src/format.rs +++ b/lib/etc/libimaginteraction/src/format.rs @@ -210,6 +210,19 @@ impl HelperDef for AbbrevHelper { } } + +#[derive(Clone, Copy)] +pub struct IndentionHelper; + +impl HelperDef for IndentionHelper { + fn call<'reg: 'rc, 'rc>(&self, h: &Helper<'reg, 'rc>, _r: &'reg Registry, _ctx: &'rc Context, _rc: &mut RenderContext<'reg>, out: &mut dyn Output) -> Result<(), RenderError> { + let count = param_to_number(0, h)? as usize; + let text = h.param(1).ok_or_else(|| RenderError::new("Too few arguments"))?.value().render(); + out.write(&::std::iter::repeat(text).take(count).collect::<String>())?; + Ok(()) + } +} + pub fn register_all_color_helpers(handlebars: &mut Registry) { handlebars.register_helper("black" , Box::new(ColorizeBlackHelper)); handlebars.register_helper("blue" , Box::new(ColorizeBlueHelper)); @@ -229,5 +242,6 @@ pub fn register_all_format_helpers(handlebars: &mut Registry) { handlebars.register_helper("lpad" , Box::new(LeftPadHelper)); handlebars.register_helper("rpad" , Box::new(RightPadHelper)); handlebars.register_helper("abbrev" , Box::new(AbbrevHelper)); + handlebars.register_helper("indent" , Box::new(IndentionHelper)); } |