summaryrefslogtreecommitdiff
path: root/jni/ruby/tool/id2token.rb
diff options
context:
space:
mode:
Diffstat (limited to 'jni/ruby/tool/id2token.rb')
-rwxr-xr-xjni/ruby/tool/id2token.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/jni/ruby/tool/id2token.rb b/jni/ruby/tool/id2token.rb
new file mode 100755
index 0000000..191b872
--- /dev/null
+++ b/jni/ruby/tool/id2token.rb
@@ -0,0 +1,24 @@
+#! /usr/bin/ruby -p
+# -*- coding: us-ascii -*-
+BEGIN {
+ require 'optparse'
+ $:.unshift(File.dirname(__FILE__))
+ require 'vpath'
+ vpath = VPath.new
+ header = nil
+
+ opt = OptionParser.new do |o|
+ vpath.def_options(o)
+ header = o.order!(ARGV).shift
+ end or abort opt.opt_s
+
+ TOKENS = {}
+ 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)/
+}
+
+$_.gsub!(TOKENS_RE) {TOKENS[$1]} if /^%token/ =~ $_