summaryrefslogtreecommitdiffstats
path: root/vendor/handlebars/src/helpers/helper_log.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/handlebars/src/helpers/helper_log.rs')
-rw-r--r--vendor/handlebars/src/helpers/helper_log.rs72
1 files changed, 72 insertions, 0 deletions
diff --git a/vendor/handlebars/src/helpers/helper_log.rs b/vendor/handlebars/src/helpers/helper_log.rs
new file mode 100644
index 000000000..5821efa35
--- /dev/null
+++ b/vendor/handlebars/src/helpers/helper_log.rs
@@ -0,0 +1,72 @@
+use crate::context::Context;
+#[cfg(not(feature = "no_logging"))]
+use crate::error::RenderError;
+use crate::helpers::{HelperDef, HelperResult};
+#[cfg(not(feature = "no_logging"))]
+use crate::json::value::JsonRender;
+use crate::output::Output;
+use crate::registry::Registry;
+use crate::render::{Helper, RenderContext};
+#[cfg(not(feature = "no_logging"))]
+use log::Level;
+#[cfg(not(feature = "no_logging"))]
+use std::str::FromStr;
+
+#[derive(Clone, Copy)]
+pub struct LogHelper;
+
+#[cfg(not(feature = "no_logging"))]
+impl HelperDef for LogHelper {
+ fn call<'reg: 'rc, 'rc>(
+ &self,
+ h: &Helper<'reg, 'rc>,
+ _: &'reg Registry<'reg>,
+ _: &'rc Context,
+ _: &mut RenderContext<'reg, 'rc>,
+ _: &mut dyn Output,
+ ) -> HelperResult {
+ let param_to_log = h
+ .params()
+ .iter()
+ .map(|p| {
+ if let Some(ref relative_path) = p.relative_path() {
+ format!("{}: {}", relative_path, p.value().render())
+ } else {
+ p.value().render()
+ }
+ })
+ .collect::<Vec<String>>()
+ .join(", ");
+
+ let level = h
+ .hash_get("level")
+ .and_then(|v| v.value().as_str())
+ .unwrap_or("info");
+
+ if let Ok(log_level) = Level::from_str(level) {
+ log!(log_level, "{}", param_to_log)
+ } else {
+ return Err(RenderError::new(&format!(
+ "Unsupported logging level {}",
+ level
+ )));
+ }
+ Ok(())
+ }
+}
+
+#[cfg(feature = "no_logging")]
+impl HelperDef for LogHelper {
+ fn call<'reg: 'rc, 'rc>(
+ &self,
+ _: &Helper<'reg, 'rc>,
+ _: &Registry<'reg>,
+ _: &Context,
+ _: &mut RenderContext<'reg, 'rc>,
+ _: &mut dyn Output,
+ ) -> HelperResult {
+ Ok(())
+ }
+}
+
+pub static LOG_HELPER: LogHelper = LogHelper;