Optimized rule rewriting
This commit is contained in:
parent
23e3acb182
commit
dbbb1616dd
@ -284,32 +284,36 @@ impl Settings {
|
||||
RULESET_CURRENT_VERSION.to_string()
|
||||
}
|
||||
|
||||
// TODO make the return type a Result
|
||||
fn update_rules(&self) -> Vec<(Regex, String)> {
|
||||
fn update_rules(&self) -> std::result::Result<Vec<(Regex, String)>, String> {
|
||||
let mut rules = self.rules.clone();
|
||||
|
||||
// TODO Optimize that shit
|
||||
// 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 {
|
||||
let mut temp_rules: Vec<(Regex, String)> = Vec::new();
|
||||
for (from, to) in &rules {
|
||||
let from = Regex::new(
|
||||
if from_match {
|
||||
*from = Regex::new(
|
||||
from.to_string()
|
||||
.replace(
|
||||
format!("%{}", category).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!("[{}]", 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
|
||||
@ -337,7 +341,8 @@ impl Settings {
|
||||
/// let _output = settings.apply(input);
|
||||
/// ```
|
||||
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();
|
||||
debug!("===============================================");
|
||||
for (from, to) in rules {
|
||||
|
Loading…
Reference in New Issue
Block a user