use minijinja::Environment;
use minijinja::Value;
use minijinja::syntax::SyntaxConfig;
use minijinja::value::Serde;
use serde::Serialize;
pub fn to_value<T: Serialize>(value: T) -> Value {
Value::from(Serde(value))
}
pub fn configure_env(env: &mut Environment<'_>) {
let syntax = SyntaxConfig::builder()
.trim_blocks(true)
.lstrip_blocks(true)
.keep_trailing_newline(true)
.build()
.expect("the default block-trimming syntax config is valid");
env.set_syntax(syntax);
}
#[macro_export]
macro_rules! alef_context {
($($key:ident $(=> $value:expr)?),* $(,)?) => {{
let mut __alef_context = ::std::collections::BTreeMap::<&'static str, ::minijinja::Value>::new();
$(
__alef_context.insert(
stringify!($key),
$crate::template::to_value(&$crate::__alef_context_value!($key $(=> $value)?)),
);
)*
::minijinja::Value::from(::minijinja::value::Serde(__alef_context))
}};
}
#[macro_export]
#[doc(hidden)]
macro_rules! __alef_context_value {
($key:ident) => {
$key
};
($key:ident => $value:expr) => {
$value
};
}