aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2008-07-22 11:12:16 -0500
committerJoshua Peek <josh@joshpeek.com>2008-07-22 11:12:16 -0500
commit2681685450631238511cfc3c2f0fa044c1f8033a (patch)
tree2414319c504d25ece84a8cfdce5f2f6c10b13fc8 /actionpack/lib
parentbc5896e708bf8070835bebe61de03b701fa5e6f7 (diff)
downloadrails-2681685450631238511cfc3c2f0fa044c1f8033a.tar.gz
rails-2681685450631238511cfc3c2f0fa044c1f8033a.tar.bz2
rails-2681685450631238511cfc3c2f0fa044c1f8033a.zip
Extract ActiveSupport::TypedArray class to ensure an array is all of the same type [#673 state:resolved]
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_view/paths.rb31
1 files changed, 6 insertions, 25 deletions
diff --git a/actionpack/lib/action_view/paths.rb b/actionpack/lib/action_view/paths.rb
index 78548d4aa2..9cb50ab4f8 100644
--- a/actionpack/lib/action_view/paths.rb
+++ b/actionpack/lib/action_view/paths.rb
@@ -1,5 +1,5 @@
module ActionView #:nodoc:
- class PathSet < Array #:nodoc:
+ class PathSet < ActiveSupport::TypedArray #:nodoc:
def self.type_cast(obj)
if obj.is_a?(String)
if Base.warn_cache_misses && defined?(Rails) && Rails.initialized?
@@ -25,7 +25,7 @@ module ActionView #:nodoc:
end
attr_reader :path, :paths
- delegate :to_s, :to_str, :inspect, :to => :path
+ delegate :to_s, :to_str, :hash, :inspect, :to => :path
def initialize(path)
raise ArgumentError, "path already is a Path class" if path.is_a?(Path)
@@ -38,6 +38,10 @@ module ActionView #:nodoc:
to_str == path.to_str
end
+ def eql?(path)
+ to_str == path.to_str
+ end
+
def [](path)
@paths[path]
end
@@ -67,28 +71,10 @@ module ActionView #:nodoc:
end
end
- def initialize(*args)
- super(*args).map! { |obj| self.class.type_cast(obj) }
- end
-
def reload!
each { |path| path.reload! }
end
- def <<(obj)
- super(self.class.type_cast(obj))
- end
-
- def push(*objs)
- delete_paths!(objs)
- super(*objs.map { |obj| self.class.type_cast(obj) })
- end
-
- def unshift(*objs)
- delete_paths!(objs)
- super(*objs.map { |obj| self.class.type_cast(obj) })
- end
-
def [](template_path)
each do |path|
if template = path[template_path]
@@ -97,10 +83,5 @@ module ActionView #:nodoc:
end
nil
end
-
- private
- def delete_paths!(paths)
- paths.each { |p1| delete_if { |p2| p1.to_s == p2.to_s } }
- end
end
end