1 use handlebars::{Context, Handlebars, Helper, Output, RenderContext, RenderError};
2 
theme_option( h: &Helper<'_, '_>, _r: &Handlebars<'_>, ctx: &Context, rc: &mut RenderContext<'_, '_>, out: &mut dyn Output, ) -> Result<(), RenderError>3 pub fn theme_option(
4     h: &Helper<'_, '_>,
5     _r: &Handlebars<'_>,
6     ctx: &Context,
7     rc: &mut RenderContext<'_, '_>,
8     out: &mut dyn Output,
9 ) -> Result<(), RenderError> {
10     trace!("theme_option (handlebars helper)");
11 
12     let param = h.param(0).and_then(|v| v.value().as_str()).ok_or_else(|| {
13         RenderError::new("Param 0 with String type is required for theme_option helper.")
14     })?;
15 
16     let default_theme = rc.evaluate(ctx, "@root/default_theme")?;
17     let default_theme_name = default_theme
18         .as_json()
19         .as_str()
20         .ok_or_else(|| RenderError::new("Type error for `default_theme`, string expected"))?;
21 
22     out.write(param)?;
23     if param.to_lowercase() == default_theme_name.to_lowercase() {
24         out.write(" (default)")?;
25     }
26 
27     Ok(())
28 }
29