diff options
author | José Valim <jose.valim@gmail.com> | 2010-03-07 19:41:58 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-03-07 19:41:58 +0100 |
commit | c7564d74e8a9b451f9fc78566ab0c734671f9612 (patch) | |
tree | c903fd5650626a79f53c89ccb1b8e10e1052bae6 /actionpack/lib/action_view/template | |
parent | 6e0443fd433393dc1967fab4f4fa06dc2b3c02fd (diff) | |
download | rails-c7564d74e8a9b451f9fc78566ab0c734671f9612.tar.gz rails-c7564d74e8a9b451f9fc78566ab0c734671f9612.tar.bz2 rails-c7564d74e8a9b451f9fc78566ab0c734671f9612.zip |
Added template lookup responsible to hold all information used in template lookup.
Diffstat (limited to 'actionpack/lib/action_view/template')
-rw-r--r-- | actionpack/lib/action_view/template/lookup.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/template/lookup.rb b/actionpack/lib/action_view/template/lookup.rb new file mode 100644 index 0000000000..ea3a12615b --- /dev/null +++ b/actionpack/lib/action_view/template/lookup.rb @@ -0,0 +1,48 @@ +module ActionView + class Template + class Lookup + attr_reader :details, :view_paths + + class DetailsKey + attr_reader :details + alias :eql? :equal? + + @details_keys = Hash.new + + def self.get(details) + @details_keys[details] ||= new(details) + end + + def initialize(details) + @details, @hash = details, details.hash + end + end + + def initialize(view_paths, details = {}) + @details = details + self.view_paths = view_paths + end + + def view_paths=(paths) + @view_paths = ActionView::Base.process_view_paths(paths) + end + + def details=(details) + @details = details + @details_key = nil if @details_key && @details_key.details != details + end + + def details_key + @details_key ||= DetailsKey.get(details) unless details.empty? + end + + def find(name, prefix = nil, partial = false) + @view_paths.find(name, details, prefix, partial || false, details_key) + end + + def exists?(name, prefix = nil, partial = false) + @view_paths.exists?(name, details, prefix, partial || false, details_key) + end + end + end +end
\ No newline at end of file |