1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/find.rb
matz 9a46002fc0 matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2000-10-02 07:48:42 +00:00

44 lines
711 B
Ruby

# Usage:
# require "find"
#
# Find.find('/foo','/bar') {|f| ...}
# or
# include Find
# find('/foo','/bar') {|f| ...}
#
module Find
def find(*path)
while file = path.shift
catch(:prune) do
yield file
begin
if File.lstat(file).directory? then
d = Dir.open(file)
begin
for f in d
next if f == "." or f == ".."
if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then
f = file + f
elsif file == "/" then
f = "/" + f
else
f = File.join(file, f)
end
path.unshift f
end
ensure
d.close
end
end
rescue Errno::ENOENT
end
end
end
end
def prune
throw :prune
end
module_function :find, :prune
end