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