mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-25 10:08:33 +02:00
feat(config): add negative matching strategies
This commit adds support for negative matching strategies to complement Equals, StartsWith, EndsWith and Contains.
This commit is contained in:
@@ -75,6 +75,10 @@ pub enum MatchingStrategy {
|
|||||||
EndsWith,
|
EndsWith,
|
||||||
Contains,
|
Contains,
|
||||||
Regex,
|
Regex,
|
||||||
|
DoesNotEndWith,
|
||||||
|
DoesNotStartWith,
|
||||||
|
DoesNotEqual,
|
||||||
|
DoesNotContain,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
|
#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
|
||||||
|
|||||||
@@ -548,7 +548,6 @@ pub fn should_act(
|
|||||||
should_act
|
should_act
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::cognitive_complexity, clippy::too_many_lines)]
|
|
||||||
pub fn should_act_individual(
|
pub fn should_act_individual(
|
||||||
title: &str,
|
title: &str,
|
||||||
exe_name: &str,
|
exe_name: &str,
|
||||||
@@ -607,6 +606,28 @@ pub fn should_act_individual(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Some(MatchingStrategy::DoesNotEqual) => match identifier.kind {
|
||||||
|
ApplicationIdentifier::Title => {
|
||||||
|
if !title.eq(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Class => {
|
||||||
|
if !class.eq(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Exe => {
|
||||||
|
if !exe_name.eq(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Path => {
|
||||||
|
if !path.eq(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
Some(MatchingStrategy::StartsWith) => match identifier.kind {
|
Some(MatchingStrategy::StartsWith) => match identifier.kind {
|
||||||
ApplicationIdentifier::Title => {
|
ApplicationIdentifier::Title => {
|
||||||
if title.starts_with(&identifier.id) {
|
if title.starts_with(&identifier.id) {
|
||||||
@@ -629,6 +650,28 @@ pub fn should_act_individual(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Some(MatchingStrategy::DoesNotStartWith) => match identifier.kind {
|
||||||
|
ApplicationIdentifier::Title => {
|
||||||
|
if !title.starts_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Class => {
|
||||||
|
if !class.starts_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Exe => {
|
||||||
|
if !exe_name.starts_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Path => {
|
||||||
|
if !path.starts_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
Some(MatchingStrategy::EndsWith) => match identifier.kind {
|
Some(MatchingStrategy::EndsWith) => match identifier.kind {
|
||||||
ApplicationIdentifier::Title => {
|
ApplicationIdentifier::Title => {
|
||||||
if title.ends_with(&identifier.id) {
|
if title.ends_with(&identifier.id) {
|
||||||
@@ -651,6 +694,28 @@ pub fn should_act_individual(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Some(MatchingStrategy::DoesNotEndWith) => match identifier.kind {
|
||||||
|
ApplicationIdentifier::Title => {
|
||||||
|
if !title.ends_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Class => {
|
||||||
|
if !class.ends_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Exe => {
|
||||||
|
if !exe_name.ends_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Path => {
|
||||||
|
if !path.ends_with(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
Some(MatchingStrategy::Contains) => match identifier.kind {
|
Some(MatchingStrategy::Contains) => match identifier.kind {
|
||||||
ApplicationIdentifier::Title => {
|
ApplicationIdentifier::Title => {
|
||||||
if title.contains(&identifier.id) {
|
if title.contains(&identifier.id) {
|
||||||
@@ -673,6 +738,28 @@ pub fn should_act_individual(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Some(MatchingStrategy::DoesNotContain) => match identifier.kind {
|
||||||
|
ApplicationIdentifier::Title => {
|
||||||
|
if !title.contains(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Class => {
|
||||||
|
if !class.contains(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Exe => {
|
||||||
|
if !exe_name.contains(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ApplicationIdentifier::Path => {
|
||||||
|
if !path.contains(&identifier.id) {
|
||||||
|
should_act = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
Some(MatchingStrategy::Regex) => match identifier.kind {
|
Some(MatchingStrategy::Regex) => match identifier.kind {
|
||||||
ApplicationIdentifier::Title => {
|
ApplicationIdentifier::Title => {
|
||||||
if let Some(re) = regex_identifiers.get(&identifier.id) {
|
if let Some(re) = regex_identifiers.get(&identifier.id) {
|
||||||
|
|||||||
Reference in New Issue
Block a user