Sha256: 659200e3a4f968047ad87c537259d956a36ecbab189a25b2117e0d7918357691

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

module Mack
  module Rendering
    module Type
      class Distributed < Mack::Rendering::Type::Base

        # render(:distributed, "distributed://host/resource")
        def render
            uri = Addressable::URI.parse(self._render_value)
            raise InvalidAddressableURIFormat.new("#{self._render_value}") if uri.host.nil? or uri.path.nil?
            
            app_name = uri.host
            resource = File.join("app", "views", uri.path)
            
            data = Mack::Distributed::View.ref(app_name)
            if data
              raw = ""
              Mack::Rendering::Engine::Registry.engines[:distributed].each do |e|
                @engine = find_engine(e).new(self.view_template)

                view_path = "#{resource}.#{self._options[:format]}.#{@engine.extension}"
                raw = data.get(view_path)
                break if !raw.nil?
              end
              
              raise Mack::Errors::ResourceNotFound.new("#{self._options[:distributed]}") if raw.nil?
              
              old_render_value = self.view_template._render_value.dup
              self.view_template._render_value = raw
              Mack::Rendering::Type::Inline.new(self.view_template).render
              # self.view_template.render_value = old_render_value
            end
        end
      end
    end
  end
end

Mack::Rendering::Engine::Registry.register(:distributed, :builder)
Mack::Rendering::Engine::Registry.register(:distributed, :erubis)

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mack-distributed-0.8.0.2 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.1 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.2 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.0.101 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.0.1 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.0.3 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.3 lib/mack-distributed/views/rendering/type/distributed.rb
mack-distributed-0.8.3.1 lib/mack-distributed/views/rendering/type/distributed.rb