Sha256: 0d8d18d88a458d9a02ece8116907eff4900eca50983b468c0962fc603c82e7fa

Contents?: true

Size: 785 Bytes

Versions: 1

Compression:

Stored size: 785 Bytes

Contents

# frozen_string_literal: true

module Cosensee
  # convert into html
  class TailwindRenderer
    include HtmlEncodable

    # content is Cosensee objects or an array of them
    def initialize(content:)
      @content = content
    end

    attr_reader :content

    def render
      if content.is_a?(Array)
        content.map do |c|
          if c.is_a?(String)
            escape_html(c)
          else
            renderer_class(c).new(content: c).render
          end
        end.join
      else
        renderer_class(content).new(content:).render
      end
    end

    # ex. Cosensee::TailwindRenderer::Code for Cosensee::Code
    def renderer_class(content)
      name = content.class.name.split('::').last

      Cosensee::TailwindRenderer.const_get(name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cosensee-0.6.0 lib/cosensee/tailwind_renderer.rb