Class: Frontman::ErbRenderer

Inherits:
Renderer show all
Defined in:
lib/frontman/renderers/erb_renderer.rb

Instance Method Summary collapse

Methods inherited from Renderer

#render

Instance Method Details

#compile(layout) ⇒ Object



9
10
11
# File 'lib/frontman/renderers/erb_renderer.rb', line 9

def compile(layout)
  Erubis::Eruby.new(layout, bufvar: '@_erbout')
end

#load_buffer(context) ⇒ Object



35
36
37
# File 'lib/frontman/renderers/erb_renderer.rb', line 35

def load_buffer(context)
  context.instance_variable_get(:@_erbout)
end

#render_content(compiled, content, scope, data) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/frontman/renderers/erb_renderer.rb', line 13

def render_content(compiled, content, scope, data)
  data.each do |key, value|
    scope.singleton_class.send(:define_method, key) { value }
  end

  compiled.result(scope.get_binding { content })
end

#restore_buffer(context) ⇒ Object



30
31
32
33
# File 'lib/frontman/renderers/erb_renderer.rb', line 30

def restore_buffer(context)
  context.instance_variable_set(:@_erbout, @buffer) if @buffer
  @buffer = nil
end

#save_buffer(context) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/frontman/renderers/erb_renderer.rb', line 21

def save_buffer(context)
  buffer = context.instance_variable_get(:@_erbout)

  return unless buffer

  @buffer = buffer
  context.instance_variable_set(:@_erbout, '')
end