refactor: implement Match for MatcherType

Delegate the responsibility of handling different `MatcherType`s to the config module.
This commit is contained in:
Harsh Shandilya 2022-02-22 09:38:31 +05:30
parent 3ea769676a
commit 4684713d7e
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
2 changed files with 15 additions and 9 deletions

View file

@ -11,7 +11,7 @@ use clipboard::{ClipboardContext, ClipboardProvider};
use dirs::config_dir;
use log::{debug, error};
use crate::config::{Act, Match, MatcherType, Replacements};
use crate::config::{Act, Match, Replacements};
const VERSION_ARGS: [&str; 3] = ["version", "-v", "--version"];
@ -57,14 +57,11 @@ fn loop_clipboard<'a>(config: Replacements<'a>) {
ClipboardProvider::new().expect("Failed to get clipboard");
let mut clipboard_contents = get_clipboard_contents(&mut clipboard);
while let Ok(contents) = clipboard_contents.as_deref() {
if let Some(subst) = config.substitutors.iter().find(|subst| {
return match &subst.matcher {
MatcherType::Single(matcher) => matcher.check_match(contents),
MatcherType::Multiple(matchers) => {
matchers.iter().all(|matcher| matcher.check_match(contents))
}
};
}) {
if let Some(subst) = config
.substitutors
.iter()
.find(|subst| subst.matcher.check_match(contents))
{
if subst.name.is_empty().not() {
debug!("{}: matched on {}...", &subst.name, truncate(&contents, 40));
}