Finished converting back to Vec.
This commit is contained in:
		
							parent
							
								
									b0efe50410
								
							
						
					
					
						commit
						00699b84ba
					
				| @ -242,12 +242,12 @@ impl<'a> DustRenderer<'a> { | ||||
| 
 | ||||
|     fn new_breadcrumbs_partial<'b>( | ||||
|         &'b self, | ||||
|         maybe_breadcrumbs: &'b Vec<BreadcrumbTreeElement<'b>>, | ||||
|         explicit_context_maybe_breadcrumbs: &'a Vec<BreadcrumbTreeElement<'a>>, | ||||
|         breadcrumbs: &'b Vec<BreadcrumbTreeElement<'b>>, | ||||
|         explicit_context_breadcrumbs: &'a Vec<BreadcrumbTreeElement<'a>>, | ||||
|         injected_context: Option<&'b dyn IntoContextElement>, | ||||
|         explicit_context: &Option<Path<'b>>, | ||||
|     ) { | ||||
|         /* | ||||
|     ) -> Option<Vec<BreadcrumbTreeElement<'b>>> { | ||||
| 
 | ||||
|         // If none of the additional contexts are present, return None
 | ||||
|         // to signal that the original breadcrumbs should be used
 | ||||
|         // rather than incurring a copy here.
 | ||||
| @ -258,11 +258,10 @@ impl<'a> DustRenderer<'a> { | ||||
| 
 | ||||
|         // If there is an explicit context, then drop all the current
 | ||||
|         // context
 | ||||
|         let mut parent = match explicit_context { | ||||
|             Some(_) => None, | ||||
|             None => maybe_breadcrumbs, | ||||
|         let mut new_stack = match explicit_context { | ||||
|             Some(_) => Vec::with_capacity(3), | ||||
|             None => breadcrumbs.clone(), | ||||
|         }; | ||||
|         let mut new_nodes: Vec<BreadcrumbTreeElement> = Vec::new(); | ||||
| 
 | ||||
|         injected_context.map(|ctx| { | ||||
|             // Special case: when there is no explicit context, the
 | ||||
| @ -271,32 +270,27 @@ impl<'a> DustRenderer<'a> { | ||||
|             // added after the current context but before the explicit
 | ||||
|             // context.
 | ||||
|             match explicit_context { | ||||
|                 None => { | ||||
|                     let (new_parent, passed_nodes) = | ||||
|                         Self::split_tree_at_predicate(parent, |b| b.get_ice().is_pseudo_element()); | ||||
|                     parent = new_parent; | ||||
|                     new_nodes.extend(passed_nodes.iter().map(|b| b.get_element().clone())); | ||||
|                 } | ||||
|                 _ => new_nodes.push(BreadcrumbTreeElement::from_borrowed(ctx)), | ||||
|                 None => new_stack.insert(Self::get_index_of_first_non_pseudo_element(&new_stack).unwrap_or(0), BreadcrumbTreeElement::from_borrowed(ctx)), | ||||
|                 _ => new_stack.push(BreadcrumbTreeElement::from_borrowed(ctx)) | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         explicit_context.as_ref().map(|path| { | ||||
|             // TODO: should resolving the value here use
 | ||||
|             // explicit_context_maybe_breadcrumbs or
 | ||||
|             // maybe_breadcrumbs?
 | ||||
|             walk_path(explicit_context_maybe_breadcrumbs, &path.keys) | ||||
|                 .map(|ice| ice.into_context_element(self, maybe_breadcrumbs)) | ||||
|             walk_path(explicit_context_breadcrumbs, &path.keys) | ||||
|                 .map(|ice| ice.into_context_element(self, breadcrumbs)) | ||||
|                 .ok() | ||||
|                 .flatten() | ||||
|                 .map(|val| { | ||||
|                     if val.get_context_element_reference().is_truthy() { | ||||
|                         new_nodes.push(std::convert::From::from(val)); | ||||
|                         new_stack.push(std::convert::From::from(val)); | ||||
|                     } | ||||
|                 }); | ||||
|         }); | ||||
| 
 | ||||
|         Some((parent, new_nodes))*/ | ||||
|         todo!() | ||||
|         Some(new_stack) | ||||
|     } | ||||
| 
 | ||||
|     fn preprocess_filters(filters: &Vec<Filter>) -> Vec<Filter> { | ||||
| @ -313,6 +307,13 @@ impl<'a> DustRenderer<'a> { | ||||
|         } | ||||
|         final_filters | ||||
|     } | ||||
| 
 | ||||
|     fn get_index_of_first_non_pseudo_element<'b>(breadcrumbs: &'b Vec<BreadcrumbTreeElement<'b>>) -> Option<usize> | ||||
|     { | ||||
|         breadcrumbs | ||||
|             .iter() | ||||
|             .rposition(|b| std::borrow::Borrow::<dyn IntoContextElement + 'b>::borrow(b).is_pseudo_element()) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| struct BlockContext<'a> { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander