use crate::{
helper::{Helper, HelperValue},
json,
parser::ast::Node,
render::{Context, Render},
};
use log::*;
pub struct Log;
impl Helper for Log {
fn call<'render, 'call>(
&self,
_rc: &mut Render<'render>,
ctx: &Context<'call>,
_template: Option<&'render Node<'render>>,
) -> HelperValue {
ctx.arity(1..usize::MAX)?;
let message = ctx
.arguments()
.iter()
.map(|v| json::unquote(v))
.collect::<Vec<String>>()
.join(" ");
let level = ctx
.hash("level")
.map(|v| v.as_str())
.unwrap_or(Some("info"))
.unwrap();
let lines = message.split("\n");
for line in lines {
match level {
"error" => error!("{}", line),
"debug" => debug!("{}", line),
"warn" => warn!("{}", line),
"trace" => trace!("{}", line),
_ => info!("{}", line),
}
}
Ok(None)
}
}