Add image method to get first image from rich text

This commit is contained in:
Anton Khorev 2024-06-06 16:47:06 +03:00
parent 2315885586
commit c7353c9ac1
2 changed files with 51 additions and 1 deletions

View file

@ -49,6 +49,10 @@ module RichText
(spammy_phrases * 40)
end
def image
nil
end
protected
def simple_format(text)
@ -80,12 +84,33 @@ module RichText
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