Optimized rule rewriting
This commit is contained in:
		
							parent
							
								
									23e3acb182
								
							
						
					
					
						commit
						dbbb1616dd
					
				| @ -284,32 +284,36 @@ impl Settings { | |||||||
|         RULESET_CURRENT_VERSION.to_string() |         RULESET_CURRENT_VERSION.to_string() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // TODO make the return type a Result
 |     fn update_rules(&self) -> std::result::Result<Vec<(Regex, String)>, String> { | ||||||
|     fn update_rules(&self) -> Vec<(Regex, String)> { |  | ||||||
|         let mut rules = self.rules.clone(); |         let mut rules = self.rules.clone(); | ||||||
| 
 | 
 | ||||||
|         // TODO Optimize that shit
 |  | ||||||
|         // TODO break categories in different rules
 |         // TODO break categories in different rules
 | ||||||
|  |         for (from, to) in rules.iter_mut() { | ||||||
|  |             let re = Regex::new("%\\D"); | ||||||
|  |             let from_match = re.is_match(from.as_str()); | ||||||
|  |             let to_match = re.is_match(to); | ||||||
|  |             if from_match || to_match { | ||||||
|                 for (category, content) in &self.categories { |                 for (category, content) in &self.categories { | ||||||
|             let mut temp_rules: Vec<(Regex, String)> = Vec::new(); |                     if from_match { | ||||||
|             for (from, to) in &rules { |                         *from = Regex::new( | ||||||
|                 let from = Regex::new( |  | ||||||
|                             from.to_string() |                             from.to_string() | ||||||
|                                 .replace( |                                 .replace( | ||||||
|                                     format!("%{}", category).as_str(), |                                     format!("%{}", category).as_str(), | ||||||
|                                     format!("[{}]", content).as_str(), |                                     format!("[{}]", content).as_str(), | ||||||
|                                 ) |                                 ) | ||||||
|                         .as_str(), |                                 .as_str() | ||||||
|                         ); |                         ); | ||||||
|                 let to = to.to_string().replace( |                     } | ||||||
|  |                     if to_match { | ||||||
|  |                         *to = to.to_string().replace( | ||||||
|                             format!("%{}", category).as_str(), |                             format!("%{}", category).as_str(), | ||||||
|                     format!("[{}]", content).as_str(), |                             format!("[{}]", content).as_str() | ||||||
|                         ); |                         ); | ||||||
|                 temp_rules.push((from, to)); |  | ||||||
|                     } |                     } | ||||||
|             rules = temp_rules.clone(); |  | ||||||
|                 } |                 } | ||||||
|         rules |             } | ||||||
|  |         } | ||||||
|  |         Ok(rules) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Apply list of rules to input
 |     /// Apply list of rules to input
 | ||||||
| @ -337,7 +341,8 @@ impl Settings { | |||||||
|     /// let _output = settings.apply(input);
 |     /// let _output = settings.apply(input);
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     pub fn apply(&self, s: String) -> std::result::Result<String, String> { |     pub fn apply(&self, s: String) -> std::result::Result<String, String> { | ||||||
|         let rules = self.update_rules(); |         // TODO Add Error handling
 | ||||||
|  |         let rules = self.update_rules().unwrap(); | ||||||
|         let mut s = s.clone(); |         let mut s = s.clone(); | ||||||
|         debug!("==============================================="); |         debug!("==============================================="); | ||||||
|         for (from, to) in rules { |         for (from, to) in rules { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user