Sha256: b7c109e3bdc95316a75338f2458099530199927886fcab0bec6a28f30832c9de

Contents?: true

Size: 995 Bytes

Versions: 1

Compression:

Stored size: 995 Bytes

Contents

require 'ostruct'
require 'deas-erbtags/utils'
require 'deas-erbtags/tag'

module Factory

  def self.template(*included_modules)
    template_class = Class.new do
      include *included_modules

      attr_reader :_out_buf
      def initialize
        @_out_buf = ""
      end

      # he expected API for the Deas template scope to access erb settings
      def sinatra_call
        OpenStruct.new({
          :settings => OpenStruct.new({
            :erb => { :outvar => '@_out_buf' }
          })
        })
      end

      def render(*args, &block)
        cap_content = "#{(block || Proc.new {}).call}"
        RenderArgs.new(args, cap_content).inspect
      end

      def partial(*args, &block)
        cap_content = "#{(block || Proc.new {}).call}"
        RenderArgs.new(args, cap_content).inspect
      end

    end

    template_class.new
  end

  def self.html_attrs(opts)
    Deas::ErbTags::Utils.html_attrs(opts)
  end

  RenderArgs = Struct.new(:args, :captured_content)

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
deas-erbtags-0.5.0 test/support/factory.rb