Compare commits
2 Commits
6fb1c287e0
...
dbbb1616dd
| Author | SHA1 | Date | |
|---|---|---|---|
|
dbbb1616dd
|
|||
|
23e3acb182
|
@@ -284,30 +284,36 @@ impl Settings {
|
||||
RULESET_CURRENT_VERSION.to_string()
|
||||
}
|
||||
|
||||
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 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(
|
||||
category.as_str(),
|
||||
format!("%{}", category).as_str(),
|
||||
format!("[{}]", content).as_str(),
|
||||
)
|
||||
.replace("%", "")
|
||||
.as_str(),
|
||||
.as_str()
|
||||
);
|
||||
let to = to.to_string().replace(
|
||||
category,
|
||||
format!("[{}]", content).replace("%", "").as_str(),
|
||||
}
|
||||
if to_match {
|
||||
*to = to.to_string().replace(
|
||||
format!("%{}", category).as_str(),
|
||||
format!("[{}]", content).as_str()
|
||||
);
|
||||
temp_rules.push((from, to));
|
||||
}
|
||||
rules = temp_rules.clone();
|
||||
}
|
||||
rules
|
||||
}
|
||||
}
|
||||
Ok(rules)
|
||||
}
|
||||
|
||||
/// Apply list of rules to input
|
||||
@@ -334,9 +340,9 @@ impl Settings {
|
||||
/// // set some input
|
||||
/// let _output = settings.apply(input);
|
||||
/// ```
|
||||
pub fn apply(&self, s: String) -> String {
|
||||
// Replace all `%C`s by their equivalent
|
||||
let rules = self.update_rules();
|
||||
pub fn apply(&self, s: String) -> std::result::Result<String, String> {
|
||||
// TODO Add Error handling
|
||||
let rules = self.update_rules().unwrap();
|
||||
let mut s = s.clone();
|
||||
debug!("===============================================");
|
||||
for (from, to) in rules {
|
||||
@@ -345,7 +351,7 @@ impl Settings {
|
||||
s = from.replace_all(&s, to.as_str()).to_string();
|
||||
debug!("new: {}", s);
|
||||
}
|
||||
s
|
||||
Ok(s)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user