JavaScriptプログラムをJRubyインタプリタ上で動かしてJavaScriptライブラリのRuby移植への橋頭堡にする
Ruby には therubyrhino という gem があり、JavaScript プログラムを JRuby インタプリタ内の Rhino コンテキストで実行できます。これは、JavaScript ライブラリを Ruby に移植するときに、移植前プログラムを確認するのに便利です。
GeoHex の V3 を Ruby に移植してみたいと思っているのですが、物好きなもので、
- http://geohex.net/hex_v3_core.js を Ruby インタプリタ内の JavaScript 処理系で動作させる。
- GeoHex V3 のRuby移植版を作成する。
- 移植版とhex_v3_core.jsの挙動を比較して、移植版をデバッグし完成させる。
という順番で作業をしてみたいと思います。このエントリは、上記のうち 1. を実現するものです。
準備するもの
- JRuby処理系
- therubyrhino gem (https://github.com/cowboyd/therubyrhino 。jgem install therubyrhino ですね)
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"
動作しているようです。