Add more helpers

This commit is contained in:
Matthias Beyer 2017-08-30 21:16:31 +02:00
parent 0683bf198b
commit 4908cc6aaa
2 changed files with 61 additions and 3 deletions

View File

@ -27,7 +27,7 @@ destinations = [ "-" ]
trace = "[imag][{{red level}}][{{module_path}}]: {{message}}" trace = "[imag][{{red level}}][{{module_path}}]: {{message}}"
debug = "[imag][{{cyan level}}]: {{message}}" debug = "[imag][{{cyan level}}]: {{message}}"
info = "[imag]: {{message}}" info = "[imag]: {{message}}"
warn = "[imag][{{cyan level}}]: {{yellow message}}" warn = "[imag][{{bold level}}]: {{yellow message}}"
error = "[imag][{{red level}}]: {{red message}}" error = "[imag][{{red level}}]: {{red message}}"
# #

View File

@ -88,6 +88,11 @@ impl ImagLogger {
handlebars.register_helper("white" , Box::new(self::template_helpers::ColorizeWhiteHelper)); handlebars.register_helper("white" , Box::new(self::template_helpers::ColorizeWhiteHelper));
handlebars.register_helper("yellow" , Box::new(self::template_helpers::ColorizeYellowHelper)); handlebars.register_helper("yellow" , Box::new(self::template_helpers::ColorizeYellowHelper));
handlebars.register_helper("underline" , Box::new(self::template_helpers::UnderlineHelper));
handlebars.register_helper("bold" , Box::new(self::template_helpers::BoldHelper));
handlebars.register_helper("blink" , Box::new(self::template_helpers::BlinkHelper));
handlebars.register_helper("strikethrough" , Box::new(self::template_helpers::StrikethroughHelper));
{ {
let fmt = try!(aggregate_global_format_trace(matches, config)); let fmt = try!(aggregate_global_format_trace(matches, config));
try!(handlebars.register_template_string("TRACE", fmt) // name must be uppercase try!(handlebars.register_template_string("TRACE", fmt) // name must be uppercase
@ -423,8 +428,9 @@ fn aggregate_module_settings(_matches: &ArgMatches, config: Option<&Configuratio
} }
mod template_helpers { mod template_helpers {
use handlebars::{Handlebars, HelperDef, RenderError, RenderContext, Helper}; use handlebars::{Handlebars, HelperDef, JsonRender, RenderError, RenderContext, Helper};
use ansi_term::Colour; use ansi_term::Colour;
use ansi_term::Style;
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
pub struct ColorizeBlackHelper; pub struct ColorizeBlackHelper;
@ -499,11 +505,63 @@ mod template_helpers {
} }
fn colorize(color: Colour, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(), RenderError> { fn colorize(color: Colour, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(), RenderError> {
use handlebars::JsonRender;
let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments"))); let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments")));
try!(write!(rc.writer(), "{}", color.paint(p.value().render()))); try!(write!(rc.writer(), "{}", color.paint(p.value().render())));
Ok(()) Ok(())
} }
#[derive(Clone, Copy)]
pub struct UnderlineHelper;
impl HelperDef for UnderlineHelper {
fn call(&self, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(),
RenderError> {
let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments")));
let s = Style::new().underline();
try!(write!(rc.writer(), "{}", s.paint(p.value().render())));
Ok(())
}
}
#[derive(Clone, Copy)]
pub struct BoldHelper;
impl HelperDef for BoldHelper {
fn call(&self, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(),
RenderError> {
let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments")));
let s = Style::new().bold();
try!(write!(rc.writer(), "{}", s.paint(p.value().render())));
Ok(())
}
}
#[derive(Clone, Copy)]
pub struct BlinkHelper;
impl HelperDef for BlinkHelper {
fn call(&self, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(),
RenderError> {
let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments")));
let s = Style::new().blink();
try!(write!(rc.writer(), "{}", s.paint(p.value().render())));
Ok(())
}
}
#[derive(Clone, Copy)]
pub struct StrikethroughHelper;
impl HelperDef for StrikethroughHelper {
fn call(&self, h: &Helper, _: &Handlebars, rc: &mut RenderContext) -> Result<(),
RenderError> {
let p = try!(h.param(0).ok_or(RenderError::new("Too few arguments")));
let s = Style::new().strikethrough();
try!(write!(rc.writer(), "{}", s.paint(p.value().render())));
Ok(())
}
}
} }