mdbook/crates/mdbook-html/src/html_handlebars/helpers/theme.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
1 KiB
Rust
Raw Normal View History

2024-01-04 20:16:34 +08:00
use handlebars::{
Context, Handlebars, Helper, Output, RenderContext, RenderError, RenderErrorReason,
};
use log::trace;
pub(crate) fn theme_option(
2024-01-04 20:16:34 +08:00
h: &Helper<'_>,
2020-01-24 11:01:44 +08:00
_r: &Handlebars<'_>,
ctx: &Context,
2020-01-24 11:01:44 +08:00
rc: &mut RenderContext<'_, '_>,
out: &mut dyn Output,
) -> Result<(), RenderError> {
trace!("theme_option (handlebars helper)");
let param = h.param(0).and_then(|v| v.value().as_str()).ok_or_else(|| {
2024-01-04 20:16:34 +08:00
RenderErrorReason::ParamTypeMismatchForName(
"theme_option",
"0".to_owned(),
"string".to_owned(),
)
})?;
2019-07-13 00:11:05 +08:00
let default_theme = rc.evaluate(ctx, "@root/default_theme")?;
2024-01-04 20:16:34 +08:00
let default_theme_name = default_theme.as_json().as_str().ok_or_else(|| {
RenderErrorReason::ParamTypeMismatchForName(
"theme_option",
"default_theme".to_owned(),
"string".to_owned(),
)
})?;
out.write(param)?;
2019-07-13 00:11:05 +08:00
if param.to_lowercase() == default_theme_name.to_lowercase() {
out.write(" (default)")?;
}
Ok(())
}