module Roda::RodaPlugins::Inversion::RequestMethods
Public Instance Methods
block_result_body( result )
click to toggle source
Hook block results for template rendering.
Calls superclass method
# File lib/roda/plugins/inversion.rb, line 156 def block_result_body( result ) if ( template = self.extract_template_from_result( result ) ) # Wrap the template in a layout if there is one template = self.wrap_in_layout( template ) # Set some default stuff on the top-level template self.set_common_attributes( template ) return template.render else super end end
Protected Instance Methods
extract_template_from_result( result )
click to toggle source
Fetch the template from the result
(if there is one) and return it.
# File lib/roda/plugins/inversion.rb, line 177 def extract_template_from_result( result ) templates = self.scope.class.template_map # Result is a template name. if result.is_a?( Symbol ) && templates.key?( result ) return scope.template( result ) # Result is a template object. elsif result.respond_to?( :render ) return result end # Not templated; returned as-is return nil end
set_common_attributes( template )
click to toggle source
Set some default values from the request in the given top-level template
.
# File lib/roda/plugins/inversion.rb, line 208 def set_common_attributes( template ) template.request = self template.response = self.scope.response template.app = self.scope end
wrap_in_layout( content )
click to toggle source
Wrap the specified content
template in the layout template and return it. If there isn’t a layout declared, just return content
as-is.
# File lib/roda/plugins/inversion.rb, line 196 def wrap_in_layout( content ) layout = self.scope.class.layout_template or return content layout.reload if layout.changed? l_template = layout.dup l_template.body = content return l_template end