diff options
Diffstat (limited to 'tool/id2token.rb')
-rwxr-xr-x | tool/id2token.rb | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/tool/id2token.rb b/tool/id2token.rb index 4c7189c094..191b872c5f 100755 --- a/tool/id2token.rb +++ b/tool/id2token.rb @@ -1,27 +1,22 @@ #! /usr/bin/ruby -p +# -*- coding: us-ascii -*- BEGIN { require 'optparse' - vpath = ["."] + $:.unshift(File.dirname(__FILE__)) + require 'vpath' + vpath = VPath.new header = nil opt = OptionParser.new do |o| - o.on('-v', '--vpath=DIR') {|dirs| vpath.concat dirs.split(File::PATH_SEPARATOR)} + vpath.def_options(o) header = o.order!(ARGV).shift end or abort opt.opt_s TOKENS = {} - vpath.find do |dir| - begin - h = File.read(File.join(dir, header)) - rescue Errno::ENOENT - nil - else - h.scan(/^#define\s+RUBY_TOKEN_(\w+)\s+(\d+)/) do |token, id| - TOKENS[token] = id - end - true - end - end or abort "#{header} not found in #{vpath.inspect}" + h = vpath.read(header) rescue abort("#{header} not found in #{vpath.inspect}") + h.scan(/^#define\s+RUBY_TOKEN_(\w+)\s+(\d+)/) do |token, id| + TOKENS[token] = id + end TOKENS_RE = /\bRUBY_TOKEN\((#{TOKENS.keys.join('|')})\)\s*(?=\s)/ } |