mirror of
https://github.com/discourse/discourse.git
synced 2024-12-24 06:23:45 +08:00
29 lines
869 B
Ruby
29 lines
869 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# We strip posts before detecting mentions, oneboxes, attachments etc.
|
||
|
# We strip those elements that shouldn't be detected. For example,
|
||
|
# a mention inside a quote should be ignored, so we strip it off.
|
||
|
class PostStripper
|
||
|
def self.strip(nokogiri_fragment)
|
||
|
run_core_strippers(nokogiri_fragment)
|
||
|
run_plugin_strippers(nokogiri_fragment)
|
||
|
nokogiri_fragment
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def self.run_core_strippers(nokogiri_fragment)
|
||
|
nokogiri_fragment.css(
|
||
|
"pre .mention, aside.quote > .title, aside.quote .mention, aside.quote .mention-group, .onebox, .elided",
|
||
|
).remove
|
||
|
end
|
||
|
|
||
|
def self.run_plugin_strippers(nokogiri_fragment)
|
||
|
DiscoursePluginRegistry.post_strippers.each do |stripper|
|
||
|
stripper[:block].call(nokogiri_fragment)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private_class_method :run_core_strippers, :run_plugin_strippers
|
||
|
end
|