class RenderEditorjs::Blocks::Image

Render for github.com/editor-js/image

Constants

SCHEMA

Public Instance Methods

render(data) click to toggle source
# File lib/render_editorjs/blocks/image.rb, line 30
def render(data)
  return unless valid?(data)

  url = sanitize_url(data["file"]["url"])
  caption = sanitize_caption(data["caption"])
  with_border = data["withBorder"]
  with_background = data["withBackground"]
  stretched = data["stretched"]

  html_class = "picture"
  html_class += " picture--stretched" if stretched
  html_class += " picture--with-background" if with_background
  html_class += " picture--with-border" if with_border

  html_str = content_tag :div, class: html_class do
    content_tag :img, "", src: url
  end
  html_str << content_tag(:div, caption.html_safe, class: "caption").html_safe if caption.presence
  html_str
end
sanitize(data) click to toggle source
# File lib/render_editorjs/blocks/image.rb, line 51
def sanitize(data)
  %w[caption url].each do |key|
    str = Sanitize.fragment(data[key], remove_contents: true).strip
    str.gsub!("&amp;", "&") if key == "url"
    data[key] = str
  end

  data
end
sanitize_caption(caption) click to toggle source
# File lib/render_editorjs/blocks/image.rb, line 65
def sanitize_caption(caption)
  Sanitize.fragment(caption, remove_contents: true).strip
end
sanitize_url(url) click to toggle source
# File lib/render_editorjs/blocks/image.rb, line 61
def sanitize_url(url)
  Sanitize.fragment(url, remove_contents: true).strip.gsub("&amp;", "&")
end