diff --git a/src/parser/parser.rs b/src/parser/parser.rs index 883a445..4a6db06 100644 --- a/src/parser/parser.rs +++ b/src/parser/parser.rs @@ -115,7 +115,7 @@ pub struct ParameterizedBlock<'a> { #[derive(Clone, Debug, PartialEq)] pub struct Partial<'a> { pub name: String, - params: Vec>, + pub params: Vec>, } #[derive(Clone, Debug, PartialEq)] diff --git a/src/renderer/parameters_context.rs b/src/renderer/parameters_context.rs index d301010..b4d75ef 100644 --- a/src/renderer/parameters_context.rs +++ b/src/renderer/parameters_context.rs @@ -25,4 +25,4 @@ impl<'a> ParametersContext<'a> { } } -impl<'a> ContextElement for ParametersContext<'a> {} +// impl<'a> ContextElement for ParametersContext<'a> {} diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index 32914a2..1e18a8a 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -174,8 +174,16 @@ impl<'a> DustRenderer<'a> { } } DustTag::DTPartial(partial) => { - let rendered_content = self.render(&partial.name, breadcrumbs)?; - return Ok(rendered_content); + if partial.params.is_empty() { + let rendered_content = self.render(&partial.name, breadcrumbs)?; + return Ok(rendered_content); + } else { + let injected_context = ParametersContext::new(breadcrumbs, &partial.params); + let mut new_breadcrumbs = breadcrumbs.clone(); + new_breadcrumbs.insert(new_breadcrumbs.len() - 1, &injected_context); + let rendered_content = self.render(&partial.name, &new_breadcrumbs)?; + return Ok(rendered_content); + } } _ => (), // TODO: Implement the rest }