From f4a935224c53874c19c423fde4657f2704edaffd Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 16 May 2020 12:26:28 -0400 Subject: [PATCH] Implemented the not equals helper. --- src/renderer/renderer.rs | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index e612cf5..addfa85 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -265,6 +265,47 @@ impl<'a> DustRenderer<'a> { } } } + DustTag::DTHelperNotEquals(parameterized_block) => { + let param_map: HashMap<&str, &RValue<'a>> = parameterized_block + .params + .iter() + .map(|pair: &KVPair<'a>| (pair.key, &pair.value)) + .collect(); + let left_side: Result<&dyn ContextElement, WalkError> = match param_map.get("key") { + None => return Ok("".to_owned()), + Some(rval) => match rval { + RValue::RVString(text) => Ok(text), + RValue::RVPath(path) => walk_path(breadcrumbs, &path.keys), + RValue::RVPositiveInteger(num) => Ok(num), + }, + }; + let right_side: Result<&dyn ContextElement, WalkError> = + match param_map.get("value") { + None => Err(WalkError::CantWalk), + Some(rval) => match rval { + RValue::RVString(text) => Ok(text), + RValue::RVPath(path) => walk_path(breadcrumbs, &path.keys), + RValue::RVPositiveInteger(num) => Ok(num), + }, + }; + if left_side != right_side { + match ¶meterized_block.contents { + None => return Ok("".to_owned()), + Some(body) => { + let rendered_content = self.render_body(body, breadcrumbs, blocks)?; + return Ok(rendered_content); + } + } + } else { + match ¶meterized_block.else_contents { + None => return Ok("".to_owned()), + Some(body) => { + let rendered_content = self.render_body(body, breadcrumbs, blocks)?; + return Ok(rendered_content); + } + } + } + } _ => (), // TODO: Implement the rest } Ok("".to_owned())