Method: Layout#render_to_output_buffer

Defined in:
lib/tags/layout.rb

#render_to_output_buffer(context, output) ⇒ Object

Raises:



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/tags/layout.rb', line 84

def render_to_output_buffer(context, output)
  layout_name = context.evaluate(@layout_name_expr)
  raise LayoutError, 'Bad layout name argument' unless layout_name

  layout = load_layout(layout_name)

  old_template_name = context.template_name
  old_partial       = context.partial
  begin
    context.template_name = layout_name
    context.partial       = true
    context.stack do
      @attributes.each do |key, value|
        context[key] = context.evaluate(value)
      end
      rendered_page = Liquid::Template.parse(@page_content.join)
                                      .render(context)
      context['page_content'] = rendered_page
      layout.render_to_output_buffer(context,
                                     output)
    end
  ensure
    context.template_name = old_template_name
    context.partial       = old_partial
  end

  output
end