include ActionView::Helpers::TextHelper
include ActionView::Helpers::OutputSafetyHelper
- def sanitize(text)
+ def sanitize(text, _options = {})
Sanitize.clean(text, Sanitize::Config::OSM).html_safe
end
end
doc.content.include?(phrase)
end
- [link_proportion - 0.2, 0.0].max * 200 +
- link_count * 40 +
- spammy_phrases * 40
+ ([link_proportion - 0.2, 0.0].max * 200) +
+ (link_count * 40) +
+ (spammy_phrases * 40)
+ end
+
+ def image
+ nil
end
protected
class Markdown < Base
def to_html
- linkify(sanitize(Kramdown::Document.new(self).to_html), :all)
+ linkify(sanitize(document.to_html), :all)
end
def to_text
to_s
end
+
+ def image
+ return @image if defined? @image
+
+ @image = first_image_element(document.root)&.attr&.[]("src")
+ end
+
+ private
+
+ def document
+ @document ||= Kramdown::Document.new(self)
+ end
+
+ def first_image_element(element)
+ return element if element.type == :img
+
+ element.children.find do |child|
+ nested_image = first_image_element(child)
+ break nested_image if nested_image
+ end
+ end
end
class Text < Base