Z
zimba.tm
Hi list,
While playing and coding with ruby, I found it often useful to have a better
way to handle paths that in the actual version. I think it would be nice to
have an unified way to manage paths.
$:.class => Array
ENV['PATH'] => String
<code>
class Path < Array
def initialize(path = nil)
if path.kind_of? String
paths = path.split(':')
paths.each do |p|
push p
end
elsif path.kind_of? Array
path.each do |p|
push p
end
end
end
def find(filename, ext=nil)
each do |path|
filepath = File.join(path, filename)
return filepath if File.exist?( filepath )
if ext
filepath = File.join(path, filename + ext)
return filepath if File.exist?( filepath )
end
end
return nil
end
alias :include? find
# TODO : The join symbol changes between the platforms. Make this dependent
of the platform.
def to_s
join(':')
end
end
p = Path.new($
p.include? 'ipaddr.rb'
=> "/usr/lib/ruby/1.8/ipaddr.rb"
</code>
While playing and coding with ruby, I found it often useful to have a better
way to handle paths that in the actual version. I think it would be nice to
have an unified way to manage paths.
$:.class => Array
ENV['PATH'] => String
<code>
class Path < Array
def initialize(path = nil)
if path.kind_of? String
paths = path.split(':')
paths.each do |p|
push p
end
elsif path.kind_of? Array
path.each do |p|
push p
end
end
end
def find(filename, ext=nil)
each do |path|
filepath = File.join(path, filename)
return filepath if File.exist?( filepath )
if ext
filepath = File.join(path, filename + ext)
return filepath if File.exist?( filepath )
end
end
return nil
end
alias :include? find
# TODO : The join symbol changes between the platforms. Make this dependent
of the platform.
def to_s
join(':')
end
end
p = Path.new($
p.include? 'ipaddr.rb'
=> "/usr/lib/ruby/1.8/ipaddr.rb"
</code>