only typecast what we need to typecast

This commit is contained in:
Aaron Patterson
2011-08-09 11:26:44 -07:00
parent b14f1c3ad7
commit 7cd3772fe6

View File

@@ -6,8 +6,7 @@ module ActionView #:nodoc:
attr_reader :paths
def initialize(paths = [])
@paths = paths
typecast!
@paths = typecast paths
end
def initialize_copy(other)
@@ -19,10 +18,6 @@ module ActionView #:nodoc:
paths.dup
end
def +(array)
PathSet.new(paths + array)
end
def include?(item)
paths.include? item
end
@@ -35,19 +30,22 @@ module ActionView #:nodoc:
paths.size
end
def each(&block)
paths.each(&block)
end
def compact
PathSet.new paths.compact
end
def each(&block)
paths.each(&block)
def +(array)
PathSet.new(paths + array)
end
%w(<< concat push insert unshift).each do |method|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
def #{method}(*args)
paths.#{method}(*args)
typecast!
paths.#{method}(*typecast(args))
end
METHOD
end
@@ -73,7 +71,7 @@ module ActionView #:nodoc:
protected
def typecast!
def typecast(paths)
paths.each_with_index do |path, i|
path = path.to_s if path.is_a?(Pathname)
next unless path.is_a?(String)