JavaScriptプログラムをJRubyインタプリタ上で動かしてJavaScriptライブラリのRuby移植への橋頭堡にする

Ruby には therubyrhino という gem があり、JavaScript プログラムを JRuby インタプリタ内の Rhino コンテキストで実行できます。これは、JavaScript ライブラリを Ruby に移植するときに、移植前プログラムを確認するのに便利です。
GeoHex の V3 を Ruby に移植してみたいと思っているのですが、物好きなもので、

  1. http://geohex.net/hex_v3_core.jsRuby インタプリタ内の JavaScript 処理系で動作させる。
  2. GeoHex V3 のRuby移植版を作成する。
  3. 移植版とhex_v3_core.jsの挙動を比較して、移植版をデバッグし完成させる。

という順番で作業をしてみたいと思います。このエントリは、上記のうち 1. を実現するものです。

準備するもの

the code

#rhi.jrb (for JRuby with therubyrhino gem)
require 'rubygems'
require 'rhino'
require 'open-uri'

Rhino::Context.open {|cxt|
  cxt.eval open('http://geohex.net/hex_v3_core.js').read
  p cxt.eval('GeoHex.version')
  p cxt.eval('GeoHex.getZoneByLocation(35, 135, 5).code')
}

result

$ jruby rhi.jrb 
"3.00"
"XM53531"

動作しているようです。