Merge pull request #214 from glitch-soc/keyword-mute

Maintain case-insensitivity when merging multiple matchers (#213)
pull/217/head
David Yip 2017-11-13 12:33:19 -06:00 committed by GitHub
commit bfd9230d61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 2 deletions

View File

@ -35,7 +35,7 @@ class Glitch::KeywordMute < ApplicationRecord
def initialize(account_id) def initialize(account_id)
@account_id = account_id @account_id = account_id
regex_text = Rails.cache.fetch("keyword_mutes:regex:#{account_id}") { regex_text_for_account } regex_text = Rails.cache.fetch("keyword_mutes:regex:#{account_id}") { regex_text_for_account }
@regex = /#{regex_text}/i @regex = /#{regex_text}/
end end
def =~(str) def =~(str)
@ -60,7 +60,7 @@ class Glitch::KeywordMute < ApplicationRecord
sb = keyword =~ /\A[[:word:]]/ ? '\b' : '' sb = keyword =~ /\A[[:word:]]/ ? '\b' : ''
eb = keyword =~ /[[:word:]]\Z/ ? '\b' : '' eb = keyword =~ /[[:word:]]\Z/ ? '\b' : ''
/#{sb}#{Regexp.escape(keyword)}#{eb}/ /(?mix:#{sb}#{Regexp.escape(keyword)}#{eb})/
end end
end end
end end

View File

@ -60,6 +60,13 @@ RSpec.describe Glitch::KeywordMute, type: :model do
expect(matcher =~ 'This is a HOT take').to be_truthy expect(matcher =~ 'This is a HOT take').to be_truthy
end 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')
expect(matcher =~ 'This is a HOT take').to be_truthy
end
it 'matches keywords surrounded by non-alphanumeric ornamentation' do it 'matches keywords surrounded by non-alphanumeric ornamentation' do
Glitch::KeywordMute.create!(account: alice, keyword: 'hot') Glitch::KeywordMute.create!(account: alice, keyword: 'hot')