Merge pull request #534 from glitch-soc/restructure-kw-as-word-lists
Escape metacharacters in non-whole-word keyword mutes (#463, #533)
This commit is contained in:
		
						commit
						68373e799b
					
				@ -50,7 +50,7 @@ class Glitch::KeywordMute < ApplicationRecord
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def matches?(str)
 | 
					    def matches?(str)
 | 
				
			||||||
      str =~ (whole_word ? boundary_regex_for_keyword : /#{keyword}/i)
 | 
					      str =~ (whole_word ? boundary_regex_for_keyword : /#{Regexp.escape(keyword)}/i)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -79,12 +79,18 @@ RSpec.describe Glitch::KeywordMute, type: :model do
 | 
				
			|||||||
        expect(matcher.matches?('(hot take)')).to be_truthy
 | 
					        expect(matcher.matches?('(hot take)')).to be_truthy
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it 'escapes metacharacters in keywords' do
 | 
					      it 'escapes metacharacters in whole-word keywords' do
 | 
				
			||||||
        Glitch::KeywordMute.create!(account: alice, keyword: '(hot take)')
 | 
					        Glitch::KeywordMute.create!(account: alice, keyword: '(hot take)')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        expect(matcher.matches?('(hot take)')).to be_truthy
 | 
					        expect(matcher.matches?('(hot take)')).to be_truthy
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'escapes metacharacters in non-whole-word keywords' do
 | 
				
			||||||
 | 
					        Glitch::KeywordMute.create!(account: alice, keyword: '(-', whole_word: false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        expect(matcher.matches?('bad (-)')).to be_truthy
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      it 'uses case-folding rules appropriate for more than just English' do
 | 
					      it 'uses case-folding rules appropriate for more than just English' do
 | 
				
			||||||
        Glitch::KeywordMute.create!(account: alice, keyword: 'großeltern')
 | 
					        Glitch::KeywordMute.create!(account: alice, keyword: 'großeltern')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user