Class: Markaby::Rails::TemplateHandler

Inherits:
ActionView::TemplateHandler
  • Object
show all
Includes:
ActionView::TemplateHandlers::Compilable
Defined in:
lib/markaby/rails/current.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#viewObject

Returns the value of attribute view.



29
30
31
# File 'lib/markaby/rails/current.rb', line 29

def view
  @view
end

Instance Method Details

#compile(template, local_assigns = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/markaby/rails/current.rb', line 8

def compile(template, local_assigns={})
  <<-CODE
    __template_handler = Markaby::Rails::TemplateHandler.new
    __template_handler.view = self
    __template_handler.render(lambda {
      #{template.source}
    }, local_assigns)
  CODE
end

#render(template, local_assigns = (template.respond_to?(:locals) ? template.locals : {})) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/markaby/rails/current.rb', line 18

def render(template, local_assigns = (template.respond_to?(:locals) ? template.locals : {}))
  builder = RailsBuilder.new(instance_variables.merge(local_assigns), @view)
  @view.output_buffer = builder

  template.is_a?(Proc) ?
    builder.instance_eval(&template) :
    builder.instance_eval(template.source)

  builder.to_s
end