Class Mack::Rendering::Type::Layout
In: lib/mack-distributed/views/rendering/type/layout.rb
Parent: Object

Methods

render  

Public Instance methods

[Source]

    # File lib/mack-distributed/views/rendering/type/layout.rb, line 8
 8:         def render
 9:           if !self._options[:layout].starts_with?("distributed")
10:             # this is the regular layout, so call the local_render method
11:             _original_render
12:           else
13:             uri = Addressable::URI.parse(self._options[:layout])
14:             raise InvalidAddressableURIFormat.new("#{self._options[:layout]}") if uri.host.nil? or uri.path.nil?
15:             
16:             app_name = uri.host
17:             resource = File.join("app", "views", "layouts", uri.path)
18: 
19:             data = Mack::Distributed::View.ref(app_name)
20:             if data
21:               raw = ""
22:               Mack::Rendering::Engine::Registry.engines[:layout].each do |e|
23:                 @engine = find_engine(e).new(self.view_template)
24: 
25:                 layout_path = "#{resource}.#{self._options[:format]}.#{@engine.extension}"
26:                 raw = data.get(layout_path)
27:                 break if !raw.nil?
28:               end
29: 
30:               raise Mack::Errors::ResourceNotFound.new("#{self._options[:distributed]}") if raw.nil?
31: 
32:               old_render_value = self.view_template._render_value.dup
33:               self.view_template._render_value = raw
34:               Mack::Rendering::Type::Inline.new(self.view_template).render
35:             end
36:           end
37:         end

[Validate]