jrubyでjavascriptを実行させる
jrubyからrhinoを使ってjsを実行。渡す引数はjrubyなんかで作ったものでケーオツな状態。
こんなん試したけどなにに使おうか・・
require 'java' include_class "org.mozilla.javascript.Context" include_class "org.mozilla.javascript.Function" context = Context::enter begin script = "function add(a,b){return a+b};" ##initialize global scope scope = context.initStandardObjects ##script string compile func = context.compileFunction(scope, script, nil, 0, nil) ##do function res = func.call(context, scope, nil, [1,2].to_java) puts res ensure Context::exit end
よくドキュメント読んでないので分からないんだけど、context.initStandardObjectsでStringだのDateだのNumberだのjsのオブジェクトが初期化されるみたいな。それとともにグローバル変数なんかもセットされるみたいな? あとはfunction作って引数とか渡すみたい。このへんは生jsの上の層の扱い方に似ている気がする。
すごく無駄なことをしている気がするけど、なんかに使えるかもなんでメモしとく。