class RenderEditorjs::Document
Attributes
content[R]
errors[R]
renderer[R]
Public Class Methods
new(content, renderer = RenderEditorjs::DefaultRenderer.new)
click to toggle source
# File lib/render_editorjs/document.rb, line 7 def initialize(content, renderer = RenderEditorjs::DefaultRenderer.new) @renderer = renderer @content = content.is_a?(Hash) ? content : parse_json(content) @errors = [] end
Public Instance Methods
render()
click to toggle source
# File lib/render_editorjs/document.rb, line 21 def render return "" unless valid_renderer? content["blocks"].map do |block| block_renderer = block_renderers(block["type"]) next unless block_renderer block_renderer.render(block["data"]) end.join end
valid?()
click to toggle source
# File lib/render_editorjs/document.rb, line 13 def valid? return false unless valid_renderer? validate_blocks @errors.empty? end
Private Instance Methods
block_renderers(block_type)
click to toggle source
# File lib/render_editorjs/document.rb, line 52 def block_renderers(block_type) @block_renderers ||= {} @block_renderers[block_type] ||= renderer.mapping[block_type] end
parse_json(content)
click to toggle source
# File lib/render_editorjs/document.rb, line 57 def parse_json(content) JSON.parse(content) rescue JSON::ParserError nil end
valid_renderer?()
click to toggle source
# File lib/render_editorjs/document.rb, line 34 def valid_renderer? renderer.validator(content).validate! rescue JSON::Schema::ValidationError => e @errors << e.message false end
validate_blocks()
click to toggle source
# File lib/render_editorjs/document.rb, line 42 def validate_blocks content["blocks"].each do |block| block_renderer = block_renderers(block["type"]) next unless block_renderer validator = block_renderer.validator(block["data"]) @errors << validator.errors unless validator.valid? end end