about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/models/glitch/keyword_mute.rb2
-rw-r--r--spec/models/glitch/keyword_mute_spec.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/app/models/glitch/keyword_mute.rb b/app/models/glitch/keyword_mute.rb
index a2481308f..f9c380f39 100644
--- a/app/models/glitch/keyword_mute.rb
+++ b/app/models/glitch/keyword_mute.rb
@@ -70,7 +70,7 @@ class Glitch::KeywordMute < ApplicationRecord
 
     def make_regex_text
       kws = keywords.map! do |whole_word, keyword|
-        whole_word ? boundary_regex_for_keyword(keyword) : keyword
+        whole_word ? boundary_regex_for_keyword(keyword) : /(?i:#{keyword})/
       end
 
       Regexp.union(kws).source
diff --git a/spec/models/glitch/keyword_mute_spec.rb b/spec/models/glitch/keyword_mute_spec.rb
index 0ffc7b18f..79225e3b9 100644
--- a/spec/models/glitch/keyword_mute_spec.rb
+++ b/spec/models/glitch/keyword_mute_spec.rb
@@ -60,6 +60,12 @@ RSpec.describe Glitch::KeywordMute, type: :model do
         expect(matcher.matches?('This is a HOT take')).to be_truthy
       end
 
+      it 'matches if at least one non-whole-word keyword case-insensitively matches the text' do
+        Glitch::KeywordMute.create!(account: alice, keyword: 'hot', whole_word: false)
+
+        expect(matcher.matches?('This is a HOTTY take')).to be_truthy
+      end
+
       it 'maintains case-insensitivity when combining keywords into a single matcher' do
         Glitch::KeywordMute.create!(account: alice, keyword: 'hot')
         Glitch::KeywordMute.create!(account: alice, keyword: 'cold')