diff options
Diffstat (limited to 'tool/vpath.rb')
-rw-r--r-- | tool/vpath.rb | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/tool/vpath.rb b/tool/vpath.rb deleted file mode 100644 index 48ab148405..0000000000 --- a/tool/vpath.rb +++ /dev/null @@ -1,87 +0,0 @@ -# -*- coding: us-ascii -*- - -class VPath - attr_accessor :separator - - def initialize(*list) - @list = list - @additional = [] - @separator = nil - end - - def inspect - list.inspect - end - - def search(meth, base, *rest) - begin - meth.call(base, *rest) - rescue Errno::ENOENT => error - list.each do |dir| - return meth.call(File.join(dir, base), *rest) rescue nil - end - raise error - end - end - - def process(*args, &block) - search(File.method(__callee__), *args, &block) - end - - alias stat process - alias lstat process - - def open(*args) - f = search(File.method(:open), *args) - if block_given? - begin - yield f - ensure - f.close unless f.closed? - end - else - f - end - end - - def read(*args) - open(*args) {|f| f.read} - end - - def foreach(file, *args, &block) - open(file) {|f| f.each(*args, &block)} - end - - def def_options(opt) - opt.on("-I", "--srcdir=DIR", "add a directory to search path") {|dir| - @additional << dir - } - opt.on("-L", "--vpath=PATH LIST", "add directories to search path") {|dirs| - @additional << [dirs] - } - opt.on("--path-separator=SEP", /\A(?:\W\z|\.(\W).+)/, "separator for vpath") {|sep, vsep| - # hack for msys make. - @separator = vsep || sep - } - end - - def list - @additional.reject! do |dirs| - case dirs - when String - @list << dirs - when Array - raise "--path-separator option is needed for vpath list" unless @separator - # @separator ||= (require 'rbconfig'; RbConfig::CONFIG["PATH_SEPARATOR"]) - @list.concat(dirs[0].split(@separator)) - end - true - end - @list - end - - def strip(path) - prefix = list.map {|dir| Regexp.quote(dir)} - path.sub(/\A#{prefix.join('|')}(?:\/|\z)/, '') - end -end |