From b39676548801c4e9c51e0f57e5a96c5c8465466a Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 6 Jun 2020 23:15:12 -0400 Subject: [PATCH] Updated Exists/NotExists for the new architecture. --- src/renderer/renderer.rs | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index 0506c0b..0973708 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -260,6 +260,52 @@ impl<'a> DustRenderer<'a> { } } } + DustTag::DTExists(container) => { + let new_breadcrumbs = self.new_breadcrumbs_partial( + breadcrumbs, + breadcrumbs, + None, + &container.explicit_context, + ); + let val = walk_path(breadcrumbs, &container.path.keys) + .map(|ice| ice.into_context_element(self, breadcrumbs)); + return match val { + Ok(Some(v)) if v.get_context_element_reference().is_truthy() => self + .render_maybe_body( + &container.contents, + new_breadcrumbs.as_ref().unwrap_or(breadcrumbs), + blocks, + ), + _ => self.render_maybe_body( + &container.else_contents, + new_breadcrumbs.as_ref().unwrap_or(breadcrumbs), + blocks, + ), + }; + } + DustTag::DTNotExists(container) => { + let new_breadcrumbs = self.new_breadcrumbs_partial( + breadcrumbs, + breadcrumbs, + None, + &container.explicit_context, + ); + let val = walk_path(breadcrumbs, &container.path.keys) + .map(|ice| ice.into_context_element(self, breadcrumbs)); + return match val { + Ok(Some(v)) if v.get_context_element_reference().is_truthy() => self + .render_maybe_body( + &container.else_contents, + new_breadcrumbs.as_ref().unwrap_or(breadcrumbs), + blocks, + ), + _ => self.render_maybe_body( + &container.contents, + new_breadcrumbs.as_ref().unwrap_or(breadcrumbs), + blocks, + ), + }; + } _ => panic!("Unsupported tag"), } Ok("".to_owned())