summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-28 10:12:52 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-28 11:01:07 +0100
commit0d21b32431da044b87d937e4803c7399ad5eae93 (patch)
treea4efecb2a20e3bc1bb6d9b0c4d6d42d3a5e41ca2
parentda620df345c2194100af338412da3ada211e18d6 (diff)
Add IndentionHelper for handlebars templating
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/etc/libimaginteraction/src/format.rs14
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));
}