moenarchbook/renderer/html_handlebars/helpers/
theme.rs

1use handlebars::{Context, Handlebars, Helper, Output, RenderContext, RenderError};
2
3pub 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}