Implemented code to find out if any comparison checks inside a select are true.

This commit is contained in:
Tom Alexander 2020-06-07 18:27:11 -04:00
parent ed38ce6a38
commit b0b857147d
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

View File

@ -528,21 +528,39 @@ impl<'a> DustRenderer<'a> {
None, None,
&parameterized_block.explicit_context, &parameterized_block.explicit_context,
); );
let new_breadcrumbs_ref = new_breadcrumbs.as_ref().unwrap_or(breadcrumbs);
match &parameterized_block.contents { match &parameterized_block.contents {
None => return Ok("".to_owned()), None => return Ok("".to_owned()),
Some(body) => { Some(body) => {
let comparison_helpers = body.elements.iter().filter_map(|te| match te { let param_map = ParametersContext::new(
TemplateElement::TETag(dt) => match dt { self,
DustTag::DTHelperEquals(_) breadcrumbs,
| DustTag::DTHelperNotEquals(_) &parameterized_block.params,
| DustTag::DTHelperGreaterThan(_) None,
| DustTag::DTHelperLessThan(_) );
| DustTag::DTHelperGreaterThanOrEquals(_) let are_any_checks_true = body
| DustTag::DTHelperLessThanOrEquals(_) => Some(dt), .elements
.iter()
.filter_map(|te| match te {
TemplateElement::TETag(dt) => match dt {
DustTag::DTHelperEquals(_)
| DustTag::DTHelperNotEquals(_)
| DustTag::DTHelperGreaterThan(_)
| DustTag::DTHelperLessThan(_)
| DustTag::DTHelperGreaterThanOrEquals(_)
| DustTag::DTHelperLessThanOrEquals(_) => Some(dt),
_ => None,
},
_ => None, _ => None,
}, })
_ => None, .map(|dt| {
}); self.perform_comparison_check(
dt,
new_breadcrumbs_ref,
Some(&param_map),
)
})
.any(|check_result| check_result.unwrap_or(false));
} }
} }
} }