Implement less-than.
This commit is contained in:
parent
496a5e0ac7
commit
30b7324049
@ -38,8 +38,8 @@ pub enum DustTag<'a> {
|
||||
DTHelperNotEquals(ParameterizedBlock<'a>),
|
||||
DTHelperGreaterThan(ParameterizedBlock<'a>),
|
||||
DTHelperLessThan(ParameterizedBlock<'a>),
|
||||
DTHelperGreaterThenOrEquals(ParameterizedBlock<'a>),
|
||||
DTHelperLessThenOrEquals(ParameterizedBlock<'a>),
|
||||
DTHelperGreaterThanOrEquals(ParameterizedBlock<'a>),
|
||||
DTHelperLessThanOrEquals(ParameterizedBlock<'a>),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
@ -162,8 +162,8 @@ fn dust_tag(i: &str) -> IResult<&str, DustTag> {
|
||||
named_block("{+", DustTag::DTBlock),
|
||||
named_block("{<", DustTag::DTInlinePartial),
|
||||
partial("{>", DustTag::DTPartial),
|
||||
parameterized_block("{@", "gte", DustTag::DTHelperGreaterThenOrEquals),
|
||||
parameterized_block("{@", "lte", DustTag::DTHelperLessThenOrEquals),
|
||||
parameterized_block("{@", "gte", DustTag::DTHelperGreaterThanOrEquals),
|
||||
parameterized_block("{@", "lte", DustTag::DTHelperLessThanOrEquals),
|
||||
parameterized_block("{@", "eq", DustTag::DTHelperEquals),
|
||||
parameterized_block("{@", "ne", DustTag::DTHelperNotEquals),
|
||||
parameterized_block("{@", "gt", DustTag::DTHelperGreaterThan),
|
||||
|
@ -139,7 +139,7 @@ fn extract_inline_partials_from_tag<'a, 'b>(
|
||||
Some(body) => extract_inline_partials_from_body(blocks, &body),
|
||||
};
|
||||
}
|
||||
DustTag::DTHelperGreaterThenOrEquals(parameterized_block) => {
|
||||
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
|
||||
match ¶meterized_block.contents {
|
||||
None => (),
|
||||
Some(body) => extract_inline_partials_from_body(blocks, &body),
|
||||
@ -149,7 +149,7 @@ fn extract_inline_partials_from_tag<'a, 'b>(
|
||||
Some(body) => extract_inline_partials_from_body(blocks, &body),
|
||||
};
|
||||
}
|
||||
DustTag::DTHelperLessThenOrEquals(parameterized_block) => {
|
||||
DustTag::DTHelperLessThanOrEquals(parameterized_block) => {
|
||||
match ¶meterized_block.contents {
|
||||
None => (),
|
||||
Some(body) => extract_inline_partials_from_body(blocks, &body),
|
||||
|
@ -323,7 +323,7 @@ impl<'a> DustRenderer<'a> {
|
||||
}
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperGreaterThenOrEquals(parameterized_block) => {
|
||||
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
|
||||
let param_map: HashMap<&str, &RValue<'a>> =
|
||||
Self::get_rval_map(¶meterized_block.params);
|
||||
let left_side: Result<&dyn ContextElement, WalkError> =
|
||||
@ -359,6 +359,42 @@ impl<'a> DustRenderer<'a> {
|
||||
}
|
||||
}
|
||||
}
|
||||
DustTag::DTHelperLessThan(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)) => {
|
||||
if left_side_unwrapped < right_side_unwrapped {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.contents,
|
||||
breadcrumbs,
|
||||
blocks,
|
||||
);
|
||||
} else {
|
||||
return self.render_maybe_body(
|
||||
¶meterized_block.else_contents,
|
||||
breadcrumbs,
|
||||
blocks,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => (), // TODO: Implement the rest
|
||||
}
|
||||
Ok("".to_owned())
|
||||
|
Loading…
x
Reference in New Issue
Block a user