Merge branch 'compare_improvements'
This commit is contained in:
		
						commit
						d82def2a70
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -137,3 +137,23 @@ fn maybe_token_to_usize( | ||||
|         .flatten() // Outer option is whether or not the param exists, inner option is whether or not it is nil
 | ||||
|         .map_or(Ok(None), |r| r.map(Some))?) | ||||
| } | ||||
| 
 | ||||
| pub fn get_property<'s, 'x>( | ||||
|     emacs: &'s Token<'s>, | ||||
|     key: &'x str, | ||||
| ) -> Result<Option<&'s Token<'s>>, Box<dyn std::error::Error>> { | ||||
|     let children = emacs.as_list()?; | ||||
|     let attributes_child = children | ||||
|         .iter() | ||||
|         .nth(1) | ||||
|         .ok_or("Should have an attributes child.")?; | ||||
|     let attributes_map = attributes_child.as_map()?; | ||||
|     let prop = attributes_map | ||||
|         .get(key) | ||||
|         .ok_or(format!("Missing {} attribute.", key))?; | ||||
|     match prop.as_atom() { | ||||
|         Ok("nil") => return Ok(None), | ||||
|         _ => {} | ||||
|     }; | ||||
|     Ok(Some(*prop)) | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander