#[macro_export] macro_rules! select_template { ($hxboosted:expr, $hxrequest:expr, $language:expr) => { select_template!("alert", $hxboosted, $hxrequest, $language) }; ($template_name:expr, $hxboosted:expr, $hxrequest:expr, $language:expr) => {{ $crate::http::template_renderer::select_template_with_fallback( $template_name, &$language, $hxboosted, $hxrequest ) }}; } /// Enhanced macro for creating template renderer from common handler parameters #[macro_export] macro_rules! create_renderer { ($web_context:expr, $language:expr, $hx_boosted:expr, $hx_request:expr) => { $crate::http::template_renderer::TemplateRenderer::new( $web_context, $language, None, // user_gender - can be enhanced later $hx_boosted, $hx_request ) }; ($web_context:expr, $language:expr, $hx_boosted:expr, $hx_request:expr, $user_gender:expr) => { $crate::http::template_renderer::TemplateRenderer::new( $web_context, $language, $user_gender, $hx_boosted, $hx_request ) }; } #[macro_export] macro_rules! contextual_error { ($web_context:expr, $language:expr, $template:expr, $template_context:expr, $error:expr) => { contextual_error!( $web_context, $language, $template, $template_context, $error, http::StatusCode::OK ) }; ($web_context:expr, $language:expr, $template:expr, $template_context:expr, $error:expr, $status_code:expr) => { { let (err_bare, err_partial) = $crate::errors::expand_error($error.to_string()); tracing::warn!(error = ?$error, "encountered error"); let error_message = $crate::i18n::fluent_loader::format_error(&$language, &err_bare, &err_partial); // Create error context using proper minijinja context let error_context = minijinja::context! { message => error_message, locale => $language.to_string(), language => $language.to_string(), }; // Merge with base context if it's a map let final_context = if $template_context.kind() == minijinja::value::ValueKind::Map { minijinja::value::merge_maps([$template_context, error_context]) } else { error_context }; Ok( ( $status_code, axum_template::RenderHtml( &$template, $web_context.engine.clone(), final_context, ) ).into_response() ) } }; // Enhanced version using template renderer (renderer: $renderer:expr, $error:expr, $context:expr) => { Ok($renderer.render_error($error, $context)) }; (renderer: $renderer:expr, $error:expr) => { Ok($renderer.render_error($error, minijinja::context!{})) }; }