提交 7cd3772f 编写于 作者: A Aaron Patterson

only typecast what we need to typecast

上级 b14f1c3a
......@@ -6,8 +6,7 @@ class PathSet #:nodoc:
attr_reader :paths
def initialize(paths = [])
@paths = paths
typecast!
@paths = typecast paths
end
def initialize_copy(other)
......@@ -19,10 +18,6 @@ def to_ary
paths.dup
end
def +(array)
PathSet.new(paths + array)
end
def include?(item)
paths.include? item
end
......@@ -35,19 +30,22 @@ def size
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 @@ def exists?(path, prefixes, *args)
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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册