From 3f047771cb9791fb339d3656ee9a8df9f6ff57e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=80=E1=B4=8D=E1=B4=9B=E1=B4=8F=E1=B4=80=E1=B4=87?= =?UTF-8?q?=CA=80?= Date: Sat, 6 Dec 2025 22:00:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E8=A7=84=E5=88=99?= =?UTF-8?q?=E9=83=A8=E5=88=86=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=B8=8D=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E5=A4=A7=E5=B0=8F=E5=86=99=E7=9A=84=E2=80=9C=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E2=80=9D=E8=BF=87=E6=BB=A4=20(#559)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/bili_sync/src/utils/rule.rs | 1 + crates/bili_sync_entity/src/custom_type/rule.rs | 3 +++ web/src/lib/components/rule-editor.svelte | 1 + 3 files changed, 5 insertions(+) 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: '匹配正则' }