Sha256: 36b8b9d2325b866a182b17b0aaa837fab25732b42eb5d6c49a3229b88ff329ff
Contents?: true
Size: 1.48 KB
Versions: 6
Compression:
Stored size: 1.48 KB
Contents
# frozen_string_literal: true module EditorJs module Blocks class QuoteBlock < Base def schema YAML.safe_load(<<~YAML) type: object additionalProperties: false properties: text: type: string caption: type: string alignment: type: string YAML end def render(_options = {}) text = data['text'].html_safe caption = data['caption'].presence&.html_safe content_tag :div, class: css_name do html_str = content_tag :div, text, class: "#{css_name}__text" html_str << content_tag(:div, caption, class: "#{css_name}__caption") if caption html_str end end def sanitize! safe_tags = { 'b' => nil, 'i' => nil, 'a' => ['href'], 'mark' => ['class'], 'code' => ['class'] } %w(text caption).each do |key| data[key] = Sanitize.fragment( data[key], elements: safe_tags.keys, attributes: safe_tags.select {|k, v| v}, remove_contents: true ) end data['alignment'] = Sanitize.fragment(data['alignment'], remove_contents: true) end def plain string = [ Sanitize.fragment(data['text']).strip, Sanitize.fragment(data['caption']).strip ].join(', ') decode_html(string) end end end end
Version data entries
6 entries across 6 versions & 1 rubygems