Also add an apply_to_mentions attribute on Glitch::KeywordMute, which is used to calculate scope. Next up: additions to the test suite to demonstrate how scoping works.
		
			
				
	
	
		
			28 lines
		
	
	
		
			723 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			723 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'html2text'
 | |
| 
 | |
| class Glitch::KeywordMuteHelper
 | |
|   attr_reader :text_matcher
 | |
|   attr_reader :tag_matcher
 | |
| 
 | |
|   def initialize(receiver_id)
 | |
|     @text_matcher   = Glitch::KeywordMute.text_matcher_for(receiver_id)
 | |
|     @tag_matcher    = Glitch::KeywordMute.tag_matcher_for(receiver_id)
 | |
|   end
 | |
| 
 | |
|   def matches?(status, scope)
 | |
|     matchers_match?(status, scope) || (status.reblog? && matchers_match?(status.reblog, scope))
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def matchers_match?(status, scope)
 | |
|     text_matcher.matches?(prepare_text(status.text), scope) ||
 | |
|       text_matcher.matches?(prepare_text(status.spoiler_text), scope) ||
 | |
|       tag_matcher.matches?(status.tags, scope)
 | |
|   end
 | |
| 
 | |
|   def prepare_text(text)
 | |
|     Html2Text.convert(text)
 | |
|   end
 | |
| end
 |