Maintain case-insensitivity when merging multiple matchers (#213)

When given two regexps, Regexp.union preserves the options set (or not
set) on each regex; this meant that none of the multiline (m),
case-insensitivity (i), or extended syntax (x) options were set.  Our
regexps are written expecting the m, i, and x options were set on all of
them, so we need to make sure that we preserve that behavior.
This commit is contained in:
David Yip
2017-11-13 11:06:02 -06:00
parent e1b7785788
commit 656d54e945
2 changed files with 9 additions and 2 deletions

View File

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