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"), | ||||
|         } | ||||
| 
 | ||||
|         Ok("".to_owned()) | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander