Sha256: 2938b5530fc93da3f3ce099235e06f5089a01718d2aef8671b966709be17b546

Contents?: true

Size: 629 Bytes

Versions: 5

Compression:

Stored size: 629 Bytes

Contents

require_relative '../base_node_renderer'

module RichTextRenderer
  # Renderer for Text nodes.
  class TextRenderer < BaseNodeRenderer
    # Renders text nodes with all markings.
    def render(node)
      node = Marshal.load(Marshal.dump(node)) # Clone the node

      node['value'] = CGI.escapeHTML(node['value'])

      node.fetch('marks', []).each do |mark|
        renderer = mappings[mark['type']]
        return mappings[nil].new(mappings).render(mark) if renderer.nil? && mappings.key?(nil)
        node['value'] = renderer.new(mappings).render(node) unless renderer.nil?
      end

      node['value']
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rich_text_renderer-0.3.2 lib/rich_text_renderer/text_renderers/text_renderer.rb
rich_text_renderer-0.3.1 lib/rich_text_renderer/text_renderers/text_renderer.rb
rich_text_renderer-0.3.0 lib/rich_text_renderer/text_renderers/text_renderer.rb
rich_text_renderer-0.2.3 lib/rich_text_renderer/text_renderers/text_renderer.rb
rich_text_renderer-0.2.2 lib/rich_text_renderer/text_renderers/text_renderer.rb