use crate::define_helper_with_prefix_and_postfix; use crate::renderer::BlockRenderFunctions; use handlebars::{ Context, Handlebars, Helper, HelperResult, Output, RenderContext, RenderError as HandlebarsRenderError, }; use serde_json::Value; use super::{table::Table, value_to_string}; fn render_html_table( h: &Helper, _: &Handlebars, _: &Context, _: &mut RenderContext, out: &mut dyn Output, ) -> HelperResult { let param = h .param(0) .ok_or_else(|| HandlebarsRenderError::new("parameter not found"))?; let value = param.value(); let table: Table = serde_json::from_value(value.clone())?; out.write("
")?; out.write(&handlebars::html_escape(&column.label))?; out.write(" | \n")?; } out.write("
---|
")?; out.write(&handlebars::html_escape(&text))?; out.write(" | \n")?; } out.write("
")?; out.write(&serde_json::to_string_pretty(&value)?)?; out.write("\n\n")?; Ok(()) } define_helper_with_prefix_and_postfix!(verbatim_monospaced, "
", ""); define_helper_with_prefix_and_postfix!(heading_1, "
", "" ); pub(super) fn block_render_functions() -> BlockRenderFunctions { BlockRenderFunctions { table: Box::new(render_html_table), verbatim_monospaced: Box::new(verbatim_monospaced), object: Box::new(render_object), heading_1: Box::new(heading_1), heading_2: Box::new(heading_2), verbatim: Box::new(verbatim), } }