Add more structure to the wasm compare.
This commit is contained in:
		
							parent
							
								
									99376515ef
								
							
						
					
					
						commit
						4bfea41291
					
				| @ -1,9 +1,83 @@ | ||||
| use std::borrow::Cow; | ||||
| 
 | ||||
| use crate::compare::Token; | ||||
| use crate::wasm::WasmDocument; | ||||
| 
 | ||||
| pub fn wasm_compare_document<'b, 's>( | ||||
|     emacs: &'b Token<'s>, | ||||
|     wasm: &'b WasmDocument<'s>, | ||||
| ) -> Result<(), Box<dyn std::error::Error>> { | ||||
| ) -> Result<WasmDiffEntry<'b, 's>, Box<dyn std::error::Error>> { | ||||
|     todo!() | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| pub enum WasmDiffEntry<'b, 's> { | ||||
|     WasmDiffResult(WasmDiffResult<'b, 's>), | ||||
|     WasmDiffLayer(WasmDiffLayer<'b, 's>), | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| pub struct WasmDiffResult<'b, 's> { | ||||
|     status: WasmDiffStatus, | ||||
|     name: Cow<'s, str>, | ||||
|     message: Option<String>, | ||||
|     children: Vec<WasmDiffEntry<'b, 's>>, | ||||
|     rust_source: &'s str, | ||||
|     #[allow(dead_code)] | ||||
|     emacs_token: &'b Token<'s>, | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| pub(crate) enum WasmDiffStatus { | ||||
|     Good, | ||||
|     Bad, | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug)] | ||||
| pub struct WasmDiffLayer<'b, 's> { | ||||
|     name: Cow<'s, str>, | ||||
|     children: Vec<WasmDiffEntry<'b, 's>>, | ||||
| } | ||||
| 
 | ||||
| impl<'b, 's> WasmDiffEntry<'b, 's> { | ||||
|     // fn has_bad_children(&self) -> bool {
 | ||||
|     //     match self {
 | ||||
|     //         DiffEntry::DiffResult(diff) => &diff.children,
 | ||||
|     //         DiffEntry::DiffLayer(diff) => &diff.children,
 | ||||
|     //     }
 | ||||
|     //     .iter()
 | ||||
|     //     .any(|child| child.is_immediately_bad() || child.has_bad_children())
 | ||||
|     // }
 | ||||
| 
 | ||||
|     // fn is_immediately_bad(&self) -> bool {
 | ||||
|     //     match self {
 | ||||
|     //         DiffEntry::DiffResult(diff) => matches!(diff.status, DiffStatus::Bad),
 | ||||
|     //         DiffEntry::DiffLayer(_) => false,
 | ||||
|     //     }
 | ||||
|     // }
 | ||||
| 
 | ||||
|     pub fn is_bad(&self) -> bool { | ||||
|         todo!() | ||||
|         // self.is_immediately_bad() || self.has_bad_children()
 | ||||
|     } | ||||
| 
 | ||||
|     pub fn print(&self, original_document: &str) -> Result<(), Box<dyn std::error::Error>> { | ||||
|         self.print_indented(0, original_document) | ||||
|     } | ||||
| 
 | ||||
|     fn print_indented( | ||||
|         &self, | ||||
|         indentation: usize, | ||||
|         original_document: &str, | ||||
|     ) -> Result<(), Box<dyn std::error::Error>> { | ||||
|         todo!() | ||||
|         // match self {
 | ||||
|         //     WasmDiffEntry::WasmDiffResult(diff) => {
 | ||||
|         //         diff.print_indented(indentation, original_document)
 | ||||
|         //     }
 | ||||
|         //     WasmDiffEntry::WasmDiffLayer(diff) => {
 | ||||
|         //         diff.print_indented(indentation, original_document)
 | ||||
|         //     }
 | ||||
|         // }
 | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -41,19 +41,19 @@ pub async fn wasm_run_anonymous_compare_with_settings<'g, 's, P: AsRef<str>>( | ||||
| 
 | ||||
|     // We do the diffing after printing out both parsed forms in case the diffing panics
 | ||||
|     let diff_result = wasm_compare_document(&parsed_sexp, &wasm_parsed)?; | ||||
|     // if !silent {
 | ||||
|     //     diff_result.print(org_contents)?;
 | ||||
|     // }
 | ||||
|     if !silent { | ||||
|         diff_result.print(org_contents)?; | ||||
|     } | ||||
| 
 | ||||
|     // if diff_result.is_bad() {
 | ||||
|     //     return Ok(false);
 | ||||
|     // } else if !silent {
 | ||||
|     //     println!(
 | ||||
|     //         "{color}Entire document passes.{reset}",
 | ||||
|     //         color = DiffResult::foreground_color(0, 255, 0),
 | ||||
|     //         reset = DiffResult::reset_color(),
 | ||||
|     //     );
 | ||||
|     // }
 | ||||
|     if diff_result.is_bad() { | ||||
|         return Ok(false); | ||||
|     } else if !silent { | ||||
|         // println!(
 | ||||
|         //     "{color}Entire document passes.{reset}",
 | ||||
|         //     color = WasmDiffResult::foreground_color(0, 255, 0),
 | ||||
|         //     reset = WasmDiffResult::reset_color(),
 | ||||
|         // );
 | ||||
|     } | ||||
| 
 | ||||
|     Ok(true) | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander