]> git.proxmox.com Git - rustc.git/blob - vendor/handlebars/src/helpers/helper_log.rs
New upstream version 1.45.0+dfsg1
[rustc.git] / vendor / handlebars / src / helpers / helper_log.rs
1 use crate::context::Context;
2 #[cfg(not(feature = "no_logging"))]
3 use crate::error::RenderError;
4 use crate::helpers::{HelperDef, HelperResult};
5 #[cfg(not(feature = "no_logging"))]
6 use crate::json::value::JsonRender;
7 use crate::output::Output;
8 use crate::registry::Registry;
9 use crate::render::{Helper, RenderContext};
10 #[cfg(not(feature = "no_logging"))]
11 use log::Level;
12 #[cfg(not(feature = "no_logging"))]
13 use std::str::FromStr;
14
15 #[derive(Clone, Copy)]
16 pub struct LogHelper;
17
18 #[cfg(not(feature = "no_logging"))]
19 impl HelperDef for LogHelper {
20 fn call<'reg: 'rc, 'rc>(
21 &self,
22 h: &Helper<'reg, 'rc>,
23 _: &'reg Registry,
24 _: &'rc Context,
25 _: &mut RenderContext<'reg, 'rc>,
26 _: &mut dyn Output,
27 ) -> HelperResult {
28 let param = h
29 .param(0)
30 .ok_or_else(|| RenderError::new("Param not found for helper \"log\""))?;
31 let level = h
32 .hash_get("level")
33 .and_then(|v| v.value().as_str())
34 .unwrap_or("info");
35
36 if let Ok(log_level) = Level::from_str(level) {
37 log!(
38 log_level,
39 "{}: {}",
40 param.relative_path().unwrap_or(&"".to_owned()),
41 param.value().render()
42 )
43 } else {
44 return Err(RenderError::new(&format!(
45 "Unsupported logging level {}",
46 level
47 )));
48 }
49 Ok(())
50 }
51 }
52
53 #[cfg(feature = "no_logging")]
54 impl HelperDef for LogHelper {
55 fn call<'reg: 'rc, 'rc>(
56 &self,
57 _: &Helper,
58 _: &Registry,
59 _: &Context,
60 _: &mut RenderContext,
61 _: &mut dyn Output,
62 ) -> HelperResult {
63 Ok(())
64 }
65 }
66
67 pub static LOG_HELPER: LogHelper = LogHelper;