Sha256: 4ecb5bb1e33d360d326022c728d35102f60e8423ae9a0907e4707e1cf375faf2
Contents?: true
Size: 1.6 KB
Versions: 5
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true module EditorJs module Blocks # quote block 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 safe_tags { 'b' => nil, 'i' => nil, 'u' => ['class'], 'del' => ['class'], 'a' => ['href'], 'mark' => ['class'], 'code' => ['class'], 'br' => nil } end def sanitize! %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: false ) 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
5 entries across 5 versions & 1 rubygems