diff --git a/crates/bili_sync/src/utils/rule.rs b/crates/bili_sync/src/utils/rule.rs index 3e6a1dd..c0f4cc4 100644 --- a/crates/bili_sync/src/utils/rule.rs +++ b/crates/bili_sync/src/utils/rule.rs @@ -16,6 +16,7 @@ impl Evaluatable<&str> for Condition { match self { Condition::Equals(expected) => expected == value, Condition::Contains(substring) => value.contains(substring), + Condition::IContains(substring) => value.to_lowercase().contains(&substring.to_lowercase()), Condition::Prefix(prefix) => value.starts_with(prefix), Condition::Suffix(suffix) => value.ends_with(suffix), Condition::MatchesRegex(_, regex) => regex.is_match(value), diff --git a/crates/bili_sync_entity/src/custom_type/rule.rs b/crates/bili_sync_entity/src/custom_type/rule.rs index 5ac59a5..eee745c 100644 --- a/crates/bili_sync_entity/src/custom_type/rule.rs +++ b/crates/bili_sync_entity/src/custom_type/rule.rs @@ -11,6 +11,8 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; pub enum Condition { Equals(T), Contains(T), + #[serde(rename = "icontains")] + IContains(T), #[serde(deserialize_with = "deserialize_regex", serialize_with = "serialize_regex")] MatchesRegex(String, #[derivative(PartialEq = "ignore")] regex::Regex), Prefix(T), @@ -41,6 +43,7 @@ impl Display for Condition { match self { Condition::Equals(v) => write!(f, "等于“{}”", v), Condition::Contains(v) => write!(f, "包含“{}”", v), + Condition::IContains(v) => write!(f, "包含(不区分大小写)“{}”", v), Condition::MatchesRegex(pat, _) => write!(f, "匹配“{}”", pat), Condition::Prefix(v) => write!(f, "以“{}”开头", v), Condition::Suffix(v) => write!(f, "以“{}”结尾", v), diff --git a/web/src/lib/components/rule-editor.svelte b/web/src/lib/components/rule-editor.svelte index dd03444..9346ca0 100644 --- a/web/src/lib/components/rule-editor.svelte +++ b/web/src/lib/components/rule-editor.svelte @@ -33,6 +33,7 @@ return [ { value: 'equals', label: '等于' }, { value: 'contains', label: '包含' }, + { value: 'icontains', label: '包含(不区分大小写)' }, { value: 'prefix', label: '以...开头' }, { value: 'suffix', label: '以...结尾' }, { value: 'matchesRegex', label: '匹配正则' }