Fill out some examples for Glitch::FilterHelper. #234.
Also add HTML entity decoding to Glitch::FilterHelper, which is needed to e.g. match "<" to the tag-stripped version of "<p><3</p>" or "<p><3</p>".
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
require 'htmlentities'
|
||||
|
||||
class Glitch::FilterHelper
|
||||
include ActionView::Helpers::SanitizeHelper
|
||||
|
||||
attr_reader :text_matcher
|
||||
attr_reader :tag_matcher
|
||||
attr_reader :entity_decoder
|
||||
|
||||
def initialize(receiver_id)
|
||||
@text_matcher = Glitch::KeywordMute.text_matcher_for(receiver_id)
|
||||
@tag_matcher = Glitch::KeywordMute.tag_matcher_for(receiver_id)
|
||||
@text_matcher = Glitch::KeywordMute.text_matcher_for(receiver_id)
|
||||
@tag_matcher = Glitch::KeywordMute.tag_matcher_for(receiver_id)
|
||||
@entity_decoder = HTMLEntities.new
|
||||
end
|
||||
|
||||
def matches?(status)
|
||||
@@ -16,8 +20,12 @@ class Glitch::FilterHelper
|
||||
private
|
||||
|
||||
def matchers_match?(status)
|
||||
text_matcher.matches?(strip_tags(status.text)) ||
|
||||
text_matcher.matches?(strip_tags(status.spoiler_text)) ||
|
||||
text_matcher.matches?(prepare_text(status.text)) ||
|
||||
text_matcher.matches?(prepare_text(status.spoiler_text)) ||
|
||||
tag_matcher.matches?(status.tags)
|
||||
end
|
||||
|
||||
def prepare_text(text)
|
||||
entity_decoder.decode(strip_tags(text))
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user