From d22ac50ad493256c707b7b39eadf3ac46d989224 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 29 Nov 2012 08:12:29 +0000 Subject: tool/vpath.rb * tool/generic_erb.rb, tool/id2token.rb: add --path-separator option for mingw where make and built ruby live in different world. * tool/vpath.rb: extract from tool/instruction.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- tool/instruction.rb | 70 ++++++----------------------------------------------- 1 file changed, 7 insertions(+), 63 deletions(-) (limited to 'tool/instruction.rb') diff --git a/tool/instruction.rb b/tool/instruction.rb index fb07d778bc..4e7a83560a 100755 --- a/tool/instruction.rb +++ b/tool/instruction.rb @@ -1,8 +1,11 @@ #!./miniruby +# -*- coding: us-ascii -*- # # require 'erb' +$:.unshift(File.dirname(__FILE__)) +require 'vpath' class RubyVM class Instruction @@ -1256,66 +1259,6 @@ class RubyVM end end - module VPATH - def search(meth, base, *rest) - begin - meth.call(base, *rest) - rescue Errno::ENOENT => error - 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 self.def_options(opt) - vpath = [] - path_sep = ':' - - opt.on("-I", "--srcdir=DIR", "add a directory to search path") {|dir| - vpath |= [dir] - } - opt.on("-L", "--vpath=PATH LIST", "add directories to search path") {|dirs| - vpath |= dirs.split(path_sep) - } - opt.on("--path-separator=SEP", /\A\W\z/, "separator for vpath") {|sep| - path_sep = sep - } - - proc { - vpath.extend(self) unless vpath.empty? - } - end - end - class SourceCodeGenerator Files = { # codes 'vm.inc' => VmBodyGenerator, @@ -1382,16 +1325,17 @@ class RubyVM opts[:verbose] = v } - vpath = VPATH.def_options(opt) + vpath = VPath.new + vpath.def_options(opt) proc { - opts[:VPATH] = vpath.call + opts[:VPATH] = vpath build opts } end def self.build opts, vpath = ['./'] - opts[:VPATH] = vpath.extend(VPATH) unless opts[:VPATH] + opts[:VPATH] ||= VPath.new(*vpath) self.new InstructionsLoader.new(opts) end end -- cgit v1.2.3