port over the remaining helpers.

master
Tom Alexander 4 years ago
parent 8cbb31251c
commit 422479bcf2
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

@ -483,8 +483,197 @@ impl<'a> DustRenderer<'a> {
);
}
}
DustTag::DTHelperGreaterThan(parameterized_block) => {
let new_breadcrumbs = self.new_breadcrumbs_partial(
breadcrumbs,
breadcrumbs,
None,
&parameterized_block.explicit_context,
);
let param_map =
ParametersContext::new(self, breadcrumbs, &parameterized_block.params);
let left_side = match param_map
.walk("key")
.map(|ice| ice.into_context_element(self, breadcrumbs))
{
Err(WalkError::CantWalk) | Ok(None) => return Ok("".to_owned()),
Ok(Some(res)) => res,
};
let right_side = param_map
.walk("value")
.map(|ice| ice.into_context_element(self, breadcrumbs));
match (right_side) {
Ok(Some(right_side_unwrapped)) => {
if left_side.get_context_element_reference()
> right_side_unwrapped.get_context_element_reference()
{
return self.render_maybe_body(
&parameterized_block.contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
} else {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
}
}
_ => {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
)
}
}
}
DustTag::DTHelperGreaterThanOrEquals(parameterized_block) => {
let new_breadcrumbs = self.new_breadcrumbs_partial(
breadcrumbs,
breadcrumbs,
None,
&parameterized_block.explicit_context,
);
let param_map =
ParametersContext::new(self, breadcrumbs, &parameterized_block.params);
let left_side = match param_map
.walk("key")
.map(|ice| ice.into_context_element(self, breadcrumbs))
{
Err(WalkError::CantWalk) | Ok(None) => return Ok("".to_owned()),
Ok(Some(res)) => res,
};
let right_side = param_map
.walk("value")
.map(|ice| ice.into_context_element(self, breadcrumbs));
match (right_side) {
Ok(Some(right_side_unwrapped)) => {
if left_side.get_context_element_reference()
>= right_side_unwrapped.get_context_element_reference()
{
return self.render_maybe_body(
&parameterized_block.contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
} else {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
}
}
_ => {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
)
}
}
}
DustTag::DTHelperLessThan(parameterized_block) => {
let new_breadcrumbs = self.new_breadcrumbs_partial(
breadcrumbs,
breadcrumbs,
None,
&parameterized_block.explicit_context,
);
let param_map =
ParametersContext::new(self, breadcrumbs, &parameterized_block.params);
let left_side = match param_map
.walk("key")
.map(|ice| ice.into_context_element(self, breadcrumbs))
{
Err(WalkError::CantWalk) | Ok(None) => return Ok("".to_owned()),
Ok(Some(res)) => res,
};
let right_side = param_map
.walk("value")
.map(|ice| ice.into_context_element(self, breadcrumbs));
match (right_side) {
Ok(Some(right_side_unwrapped)) => {
if left_side.get_context_element_reference()
< right_side_unwrapped.get_context_element_reference()
{
return self.render_maybe_body(
&parameterized_block.contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
} else {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
}
}
_ => {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
)
}
}
}
DustTag::DTHelperLessThanOrEquals(parameterized_block) => {
let new_breadcrumbs = self.new_breadcrumbs_partial(
breadcrumbs,
breadcrumbs,
None,
&parameterized_block.explicit_context,
);
let param_map =
ParametersContext::new(self, breadcrumbs, &parameterized_block.params);
let left_side = match param_map
.walk("key")
.map(|ice| ice.into_context_element(self, breadcrumbs))
{
Err(WalkError::CantWalk) | Ok(None) => return Ok("".to_owned()),
Ok(Some(res)) => res,
};
let right_side = param_map
.walk("value")
.map(|ice| ice.into_context_element(self, breadcrumbs));
match (right_side) {
Ok(Some(right_side_unwrapped)) => {
if left_side.get_context_element_reference()
<= right_side_unwrapped.get_context_element_reference()
{
return self.render_maybe_body(
&parameterized_block.contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
} else {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
);
}
}
_ => {
return self.render_maybe_body(
&parameterized_block.else_contents,
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
blocks,
)
}
}
}
_ => panic!("Unsupported tag"),
}
Ok("".to_owned())
}

Loading…
Cancel
Save