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

master
Tom Alexander 4 years ago
parent ed38ce6a38
commit b0b857147d
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

@ -528,21 +528,39 @@ impl<'a> DustRenderer<'a> {
None,
&parameterized_block.explicit_context,
);
let new_breadcrumbs_ref = new_breadcrumbs.as_ref().unwrap_or(breadcrumbs);
match &parameterized_block.contents {
None => return Ok("".to_owned()),
Some(body) => {
let comparison_helpers = body.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),
let param_map = ParametersContext::new(
self,
breadcrumbs,
&parameterized_block.params,
None,
);
let are_any_checks_true = body
.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,
});
})
.map(|dt| {
self.perform_comparison_check(
dt,
new_breadcrumbs_ref,
Some(&param_map),
)
})
.any(|check_result| check_result.unwrap_or(false));
}
}
}

Loading…
Cancel
Save