Sha256: 7fb14fac2466606ccc316cdfb6113df15ca9baed5f209ddded34129e899c67f5
Contents?: true
Size: 1.81 KB
Versions: 3
Compression:
Stored size: 1.81 KB
Contents
module Panoramic class Resolver < ActionView::Resolver require "singleton" include Singleton # this method is mandatory to implement a Resolver def find_templates(name, prefix, partial, details) conditions = { :path => build_path(name, prefix), :locale => normalize_array(details[:locale]).first, :format => normalize_array(details[:formats]).first, :handler => normalize_array(details[:handlers]), :partial => partial || false } @@model.find_model_templates(conditions).map do |record| initialize_template(record) end end # Instantiate Resolver by passing a model (decoupled from ORMs) def self.using(model) @@model = model self.instance end private # Initialize an ActionView::Template object based on the record found. def initialize_template(record) source = record.body identifier = "#{record.class} - #{record.id} - #{record.path.inspect}" handler = ActionView::Template.registered_template_handler(record.handler) details = { :format => Mime[record.format], :updated_at => record.updated_at, :virtual_path => virtual_path(record.path, record.partial) } ActionView::Template.new(source, identifier, handler, details) end # Build path with eventual prefix def build_path(name, prefix) prefix.present? ? "#{prefix}/#{name}" : name end # Normalize array by converting all symbols to strings. def normalize_array(array) array.map(&:to_s) end # returns a path depending if its a partial or template def virtual_path(path, partial) return path unless partial if index = path.rindex("/") path.insert(index + 1, "_") else "_#{path}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
panoramic-0.0.4 | lib/panoramic/resolver.rb |
panoramic-0.0.3 | lib/panoramic/resolver.rb |
panoramic-0.0.2 | lib/panoramic/resolver.rb |