Implement matchers and actions

This commit is contained in:
Harsh Shandilya 2021-11-12 09:42:39 +05:30
parent 05201d7de7
commit 3fd078e51b
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
4 changed files with 84 additions and 2 deletions

View file

@ -1,9 +1,10 @@
mod config;
use anyhow::{anyhow, Result};
use clipboard::{ClipboardContext, ClipboardProvider};
use dirs::config_dir;
use crate::config::Replacements;
use crate::config::{Act, Match, Replacements};
fn main() -> Result<()> {
let mut config_path = config_dir().ok_or(anyhow!("Failed to get config dir"))?;
@ -16,5 +17,16 @@ fn main() -> Result<()> {
} else {
Replacements::default()
};
Ok(())
let mut clipboard: ClipboardContext = ClipboardProvider::new().expect("Failed to get clipboard");
loop {
let contents = clipboard.get_contents().expect("Failed to read clipboard");
if let Some(subst) = config
.substitutors
.iter()
.find(|subst| subst.matcher.clone().check_match(&contents))
{
let result = subst.action.clone().apply_action(contents);
let _ = clipboard.set_contents(result);
};
}
}