diff --git a/js/test_cases/_helpers_lte/input1.json b/js/test_cases/helpers_lte/input1.json similarity index 100% rename from js/test_cases/_helpers_lte/input1.json rename to js/test_cases/helpers_lte/input1.json diff --git a/js/test_cases/_helpers_lte/main.dust b/js/test_cases/helpers_lte/main.dust similarity index 100% rename from js/test_cases/_helpers_lte/main.dust rename to js/test_cases/helpers_lte/main.dust diff --git a/src/renderer/renderer.rs b/src/renderer/renderer.rs index 3e29c6f..f44022c 100644 --- a/src/renderer/renderer.rs +++ b/src/renderer/renderer.rs @@ -395,6 +395,42 @@ impl<'a> DustRenderer<'a> { } } } + DustTag::DTHelperLessThanOrEquals(parameterized_block) => { + let param_map: HashMap<&str, &RValue<'a>> = + Self::get_rval_map(¶meterized_block.params); + let left_side: Result<&dyn ContextElement, WalkError> = + match Self::get_rval(breadcrumbs, ¶m_map, "key") { + None => return Ok("".to_owned()), + Some(res) => res, + }; + let right_side: Result<&dyn ContextElement, WalkError> = + Self::get_rval(breadcrumbs, ¶m_map, "value") + .unwrap_or(Err(WalkError::CantWalk)); + match (left_side, right_side) { + (Err(_), _) | (_, Err(_)) => { + return self.render_maybe_body( + ¶meterized_block.else_contents, + breadcrumbs, + blocks, + ) + } + (Ok(left_side_unwrapped), Ok(right_side_unwrapped)) => { + return match left_side_unwrapped.partial_cmp(&right_side_unwrapped) { + Some(Ordering::Less) | Some(Ordering::Equal) | None => self + .render_maybe_body( + ¶meterized_block.contents, + breadcrumbs, + blocks, + ), + Some(Ordering::Greater) => self.render_maybe_body( + ¶meterized_block.else_contents, + breadcrumbs, + blocks, + ), + }; + } + } + } _ => (), // TODO: Implement the rest } Ok("".to_owned())