use regex_specificity::get;
fn main() {
let string = "alice@myprovider.com";
let patterns = vec![
r".*",
r"[a-z]+@[a-z]+\.[a-z]+",
r"alice@[a-z]+\.[a-z]+",
];
let mut results: Vec<(&str, u64)> = Vec::new();
for pattern in patterns {
if let Ok(score) = get(string, pattern) {
results.push((pattern, score));
}
}
results.sort_by(|(_, a), (_, b)| b.cmp(a));
print(string, results);
}
fn print(string: &str, results: Vec<(&str, u64)>) {
const RW: usize = 12;
const PW: usize = 40;
println!("Target String: '{}'", string);
println!("┌{:─^rw$}┬{:─^pw$}┐", "─", "─", rw = RW, pw = PW);
println!(
"│ {:<rw$} │ {:<pw$} │",
"Result",
"Pattern",
rw = RW - 2,
pw = PW - 2
);
println!("├{:─^rw$}┼{:─^pw$}┤", "─", "─", rw = RW, pw = PW);
for (pattern, result) in results {
println!(
"│ {:<rw$} │ {:<pw$} │",
result,
pattern,
rw = RW - 2,
pw = PW - 2
);
}
println!("└{:─^rw$}┴{:─^pw$}┘", "─", "─", rw = RW, pw = PW);
}