Sha256: ac6f993e2220ed79ec526209f521c9d1fe8cdce3a07651a19b54e0e7de550bce

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

class Sinatra::ContentFor2::SlimHandler < Sinatra::ContentFor2::BaseHandler
  class << self
    def setup_slim
      return if @slim_set
      if defined?(Slim)
        Slim::Engine.set_default_options(:buffer => '@_out_buf', :generator => Temple::Generators::StringBuffer)
        @slim_set = true
      end
    end
  end

  attr_reader :output_buffer
  
  def initialize(template)
    super
    self.class.setup_slim
    @output_buffer = template.instance_variable_get(:@_out_buf)
  end

  def is_type?
    ! self.output_buffer.nil?
  end

  def capture_from_template(*args, &block)
    self.output_buffer, _buf_was = "", self.output_buffer
    block.call(*args)
    ret = eval("@_out_buf", block.binding)
    self.output_buffer = _buf_was
    ret
  end

  def block_is_type?(block)
    is_type? || (block && eval('defined? __in_erb_template', block.binding))
  end

  def engines
    @engines ||= [ :slim ]
  end

protected
  def output_buffer=(val)
    template.instance_variable_set(:@_out_buf, val)
  end
end

Sinatra::ContentFor2::BaseHandler.register(Sinatra::ContentFor2::SlimHandler)


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sinatra-content-for2-0.3.alpha1 lib/sinatra/content_for2/slim_handler.rb