diff --git a/src/parser/parser.rs b/src/parser/parser.rs index a671bbc..e965976 100644 --- a/src/parser/parser.rs +++ b/src/parser/parser.rs @@ -41,6 +41,9 @@ pub enum DustTag<'a> { DTHelperLessThan(ParameterizedBlock<'a>), DTHelperGreaterThanOrEquals(ParameterizedBlock<'a>), DTHelperLessThanOrEquals(ParameterizedBlock<'a>), + DTHelperSep(ParameterizedBlock<'a>), + DTHelperFirst(ParameterizedBlock<'a>), + DTHelperLast(ParameterizedBlock<'a>), } #[derive(Clone, Debug, PartialEq)] @@ -240,6 +243,18 @@ fn dust_tag(i: &str) -> IResult<&str, DustTag> { parameterized_block("{@", &tag_to_path("lt")), DustTag::DTHelperLessThan, ), + map( + parameterized_block("{@", &tag_to_path("sep")), + DustTag::DTHelperSep, + ), + map( + parameterized_block("{@", &tag_to_path("first")), + DustTag::DTHelperFirst, + ), + map( + parameterized_block("{@", &tag_to_path("last")), + DustTag::DTHelperLast, + ), ))(i) } diff --git a/src/renderer/inline_partial_tree.rs b/src/renderer/inline_partial_tree.rs index aa5779c..132c1d2 100644 --- a/src/renderer/inline_partial_tree.rs +++ b/src/renderer/inline_partial_tree.rs @@ -160,5 +160,35 @@ fn extract_inline_partials_from_tag<'a, 'b>( Some(body) => extract_inline_partials_from_body(blocks, &body), }; } + DustTag::DTHelperSep(parameterized_block) => { + match ¶meterized_block.contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + match ¶meterized_block.else_contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + } + DustTag::DTHelperFirst(parameterized_block) => { + match ¶meterized_block.contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + match ¶meterized_block.else_contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + } + DustTag::DTHelperLast(parameterized_block) => { + match ¶meterized_block.contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + match ¶meterized_block.else_contents { + None => (), + Some(body) => extract_inline_partials_from_body(blocks, &body), + }; + } } } diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index d1ca186..dd0699b 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -20,6 +20,7 @@ use crate::renderer::inline_partial_tree::InlinePartialTreeElement; use crate::renderer::iteration_context::IterationContext; use crate::renderer::parameters_context::ParametersContext; use crate::renderer::walking::walk_path; +use std::borrow::Borrow; use std::collections::HashMap; #[derive(Clone, Debug)] @@ -644,11 +645,57 @@ impl<'a> DustRenderer<'a> { } } } + DustTag::DTHelperSep(parameterized_block) => {} + DustTag::DTHelperFirst(parameterized_block) => {} + DustTag::DTHelperLast(parameterized_block) => {} } Ok("".to_owned()) } + /// Read a value from the context tree + pub fn get
(
+ &'a self,
+ breadcrumbs: &'a Vec ,
+ ) -> Result (
+ &'a self,
+ breadcrumbs: &'a Vec