Class: DraftForge::EditorJsRenderer
- Inherits:
-
Object
- Object
- DraftForge::EditorJsRenderer
- Defined in:
- app/services/draft_forge/editor_js_renderer.rb
Overview
Convert Editor.js data to basic HTML
Class Method Summary collapse
Class Method Details
.call(data) ⇒ Object
8 9 10 11 12 |
# File 'app/services/draft_forge/editor_js_renderer.rb', line 8 def self.call(data) data = parse(data) blocks = data.fetch('blocks', []) blocks.map { |block| render_block(block) }.join end |
.parse(data) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'app/services/draft_forge/editor_js_renderer.rb', line 14 def self.parse(data) if data.is_a?(String) JSON.parse(data) elsif data.respond_to?(:to_unsafe_h) data.to_unsafe_h else data || {} end end |
.render_block(block) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/services/draft_forge/editor_js_renderer.rb', line 24 def self.render_block(block) type = block['type'] bdata = block['data'] || {} case type when 'paragraph' "<p>#{bdata['text']}</p>" when 'header' level = bdata['level'].to_i level = 1 if level < 1 level = 6 if level > 6 "<h#{level}>#{bdata['text']}</h#{level}>" when 'list' tag = bdata['style'] == 'ordered' ? 'ol' : 'ul' items = Array(bdata['items']).map { |item| "<li>#{item}</li>" }.join "<#{tag}>#{items}</#{tag}>" else '' end end |