Cleaner code
This commit is contained in:
parent
bb9d8703f3
commit
d33190a46d
@ -206,15 +206,17 @@ impl Settings {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if settings.version > Self::get_ruleset_version() {
|
if settings.version > Self::get_ruleset_version() {
|
||||||
error!("Ruleset version too high!");
|
error!("Ruleset version too high!");
|
||||||
return Err(std::io::Error::new(
|
Err(std::io::Error::new(
|
||||||
std::io::ErrorKind::InvalidData,
|
std::io::ErrorKind::InvalidData,
|
||||||
"Ruleset version too high!",
|
"Ruleset version too high!",
|
||||||
));
|
))
|
||||||
|
} else {
|
||||||
|
info!("Successfuly imported {}", path.display());
|
||||||
|
Ok(settings)
|
||||||
}
|
}
|
||||||
info!("Successfuly imported {}", path.display());
|
|
||||||
Ok(settings)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Import settings from file path described by the argument `path`
|
/// Import settings from file path described by the argument `path`
|
||||||
@ -228,13 +230,13 @@ impl Settings {
|
|||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// let s = lang_evolve_core::settings::Settings::from("settings.yml");
|
/// let s = lang_evolve_core::settings::Settings::from("settings.yml");
|
||||||
/// ```
|
/// ```
|
||||||
pub fn from<S>(s: S) -> Self
|
pub fn from<S>(s: S) -> std::io::Result<Self>
|
||||||
where
|
where
|
||||||
S: ToString,
|
S: ToString,
|
||||||
{
|
{
|
||||||
let s = s.to_string();
|
let s = s.to_string();
|
||||||
let path = std::path::Path::new(&s);
|
let path = std::path::Path::new(&s);
|
||||||
Self::import(&path).unwrap()
|
Self::import(&path)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add a new rule to the current settings
|
/// Add a new rule to the current settings
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
mod regex_wrapper;
|
mod regex_wrapper;
|
||||||
use regex_wrapper::Regex;
|
use regex_wrapper::Regex;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref RE : Regex = Regex::new("%([A-Z])");
|
static ref RE: Regex = Regex::new("%([A-Z])");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Representation of a rule in LangEvolveRs
|
/// Representation of a rule in LangEvolveRs
|
||||||
@ -45,15 +44,9 @@ impl Rule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn detect_categories(&self) -> (u8, u8) {
|
pub fn detect_number_categories(&self) -> (u8, u8) {
|
||||||
let captures_from = match RE.captures(self.from.as_str()) {
|
let captures_from = self.from.to_string().matches('%').count() as u8;
|
||||||
None => 0 as u8,
|
let captures_to = self.to.matches('%').count() as u8;
|
||||||
Some(c) => c.len() as u8,
|
|
||||||
};
|
|
||||||
let captures_to = match RE.captures(&self.to) {
|
|
||||||
None => 0 as u8,
|
|
||||||
Some(c) => c.len() as u8,
|
|
||||||
};
|
|
||||||
(captures_from, captures_to)
|
(captures_from, captures_to)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +60,7 @@ impl Rule {
|
|||||||
format!("%{}", category).as_str(),
|
format!("%{}", category).as_str(),
|
||||||
format!("[{}]", content).as_str(),
|
format!("[{}]", content).as_str(),
|
||||||
)
|
)
|
||||||
.as_str()
|
.as_str(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
rule
|
rule
|
||||||
@ -79,16 +72,14 @@ impl Rule {
|
|||||||
categories: &HashMap<String, String>,
|
categories: &HashMap<String, String>,
|
||||||
) -> std::result::Result<Rule, String> {
|
) -> std::result::Result<Rule, String> {
|
||||||
let mut rule = self.clone();
|
let mut rule = self.clone();
|
||||||
let (from_match, to_match) = self.detect_categories();
|
let (from_match, to_match) = self.detect_number_categories();
|
||||||
// If there are only simple rewrites to make in the from String
|
// If there are only simple rewrites to make in the from String
|
||||||
if from_match > 0 && to_match == 0 {
|
if from_match > 0 && to_match == 0 {
|
||||||
rule = self.simple_rewrite(&categories);
|
rule = self.simple_rewrite(&categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are equivalences between from and to
|
// If there are equivalences between from and to
|
||||||
if from_match > 0 && to_match <= from_match && to_match > 0 {
|
if from_match > 0 && to_match <= from_match && to_match > 0 {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(rule)
|
Ok(rule)
|
||||||
}
|
}
|
||||||
@ -105,10 +96,7 @@ impl Rule {
|
|||||||
impl From<String> for Rule {
|
impl From<String> for Rule {
|
||||||
fn from(source: String) -> Self {
|
fn from(source: String) -> Self {
|
||||||
let components: Vec<&str> = source.split_terminator('>').collect();
|
let components: Vec<&str> = source.split_terminator('>').collect();
|
||||||
Self {
|
Rule::new(components[0], components[1])
|
||||||
from: Regex::new(components[0]),
|
|
||||||
to: String::from(components[1]),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user