From b2461a6a3043a30b5ec8b83def80df08b1b226f3 Mon Sep 17 00:00:00 2001 From: Ajay Date: Fri, 6 Jun 2025 23:51:36 -0400 Subject: [PATCH] Add not contains, not regex and regex ignore case --- src/utils/skipRule.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/utils/skipRule.ts b/src/utils/skipRule.ts index a755349f..1450ac63 100644 --- a/src/utils/skipRule.ts +++ b/src/utils/skipRule.ts @@ -28,7 +28,11 @@ export enum SkipRuleOperator { Equal = "==", NotEqual = "!=", Contains = "*=", - Regex = "~=" + NotContains = "!*=", + Regex = "~=", + RegexIgnoreCase = "~i=", + NotRegex = "!~=", + NotRegexIgnoreCase = "!~i=" } export interface AdvancedSkipRule { @@ -127,8 +131,16 @@ function isSkipRulePassing(segment: SponsorTime | VideoLabelsCacheData, rule: Ad return value !== rule.value; case SkipRuleOperator.Contains: return String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase()); + case SkipRuleOperator.NotContains: + return !String(value).toLocaleLowerCase().includes(String(rule.value).toLocaleLowerCase()); case SkipRuleOperator.Regex: return new RegExp(rule.value as string).test(String(value)); + case SkipRuleOperator.RegexIgnoreCase: + return new RegExp(rule.value as string, "i").test(String(value)); + case SkipRuleOperator.NotRegex: + return !new RegExp(rule.value as string).test(String(value)); + case SkipRuleOperator.NotRegexIgnoreCase: + return !new RegExp(rule.value as string, "i").test(String(value)); default: return false; }