port over the remaining helpers.
This commit is contained in:
parent
8cbb31251c
commit
422479bcf2
@ -483,8 +483,197 @@ impl<'a> DustRenderer<'a> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DustTag::DTHelperGreaterThan(parameterized_block) => {
|
||||||
|
let new_breadcrumbs = self.new_breadcrumbs_partial(
|
||||||
|
breadcrumbs,
|
||||||
|
breadcrumbs,
|
||||||
|
None,
|
||||||
|
¶meterized_block.explicit_context,
|
||||||
|
);
|
||||||
|
|
||||||
|
let param_map =
|
||||||
|
ParametersContext::new(self, breadcrumbs, ¶meterized_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(
|
||||||
|
¶meterized_block.contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_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,
|
||||||
|
¶meterized_block.explicit_context,
|
||||||
|
);
|
||||||
|
|
||||||
|
let param_map =
|
||||||
|
ParametersContext::new(self, breadcrumbs, ¶meterized_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(
|
||||||
|
¶meterized_block.contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_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,
|
||||||
|
¶meterized_block.explicit_context,
|
||||||
|
);
|
||||||
|
|
||||||
|
let param_map =
|
||||||
|
ParametersContext::new(self, breadcrumbs, ¶meterized_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(
|
||||||
|
¶meterized_block.contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_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,
|
||||||
|
¶meterized_block.explicit_context,
|
||||||
|
);
|
||||||
|
|
||||||
|
let param_map =
|
||||||
|
ParametersContext::new(self, breadcrumbs, ¶meterized_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(
|
||||||
|
¶meterized_block.contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
return self.render_maybe_body(
|
||||||
|
¶meterized_block.else_contents,
|
||||||
|
new_breadcrumbs.as_ref().unwrap_or(breadcrumbs),
|
||||||
|
blocks,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => panic!("Unsupported tag"),
|
_ => panic!("Unsupported tag"),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok("".to_owned())
|
Ok("".to_owned())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user