aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/path_set.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2010-10-14 10:25:43 +0100
committerJon Leighton <j@jonathanleighton.com>2010-10-14 10:25:43 +0100
commit3fb493c2b037ffbdda5c91d66334ec6f79faa2d1 (patch)
treee49b072103bbfe6fb6159954c786a31f44099325 /actionpack/lib/action_view/path_set.rb
parent212fdd8ba9624f61421a7a950283537a3d39ac18 (diff)
parent01ab6f961bff150d50c99f03fa3946f48ac29b17 (diff)
downloadrails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.gz
rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.bz2
rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.zip
Merge branch 'master' into nested_has_many_through
Conflicts: activerecord/lib/active_record/associations.rb activerecord/test/cases/associations/cascaded_eager_loading_test.rb
Diffstat (limited to 'actionpack/lib/action_view/path_set.rb')
-rw-r--r--actionpack/lib/action_view/path_set.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/path_set.rb b/actionpack/lib/action_view/path_set.rb
new file mode 100644
index 0000000000..dc26d75ff3
--- /dev/null
+++ b/actionpack/lib/action_view/path_set.rb
@@ -0,0 +1,41 @@
+module ActionView #:nodoc:
+ # = Action View PathSet
+ class PathSet < Array #:nodoc:
+ %w(initialize << concat insert push unshift).each do |method|
+ class_eval <<-METHOD, __FILE__, __LINE__ + 1
+ def #{method}(*args)
+ super
+ typecast!
+ end
+ METHOD
+ end
+
+ def find(path, prefix = nil, partial = false, details = {}, keys = [], key = nil)
+ template = find_all(path, prefix, partial, details, keys, key).first
+ raise MissingTemplate.new(self, "#{prefix}/#{path}", details, partial) unless template
+ template
+ end
+
+ def find_all(*args)
+ each do |resolver|
+ templates = resolver.find_all(*args)
+ return templates unless templates.empty?
+ end
+ []
+ end
+
+ def exists?(*args)
+ find_all(*args).any?
+ end
+
+ protected
+
+ def typecast!
+ each_with_index do |path, i|
+ path = path.to_s if path.is_a?(Pathname)
+ next unless path.is_a?(String)
+ self[i] = FileSystemResolver.new(path)
+ end
+ end
+ end
+end