xfy の xpath関数で ruby文を評価させようと試行中(再挑戦)
xfy の xpath関数で ruby文を評価させようと試行中
という記事を投稿したことがある。今回 それに再度 try したら、うまくできた。
xfy の xpath 関数として、jruby スクリプトの評価結果を返すものが作れた。
再挑戦では jruby 0.9.8 をつかった。こんどはすんなりと動作した。
http://homepage2.nifty.com/youichi_kato/src.html から
xfy で jruby を実行する (2007-03-21)
jruby 実行のスクリーンショット
として、{eclipse プロジェクト、build.xml 、ソース一式}, スクリーンショットを置いた。
上のスクリーンショットは次のように書いた xml を読み込んだ結果だ。
<h:ruby>
a=0
20.times{|i| a+=i}
a
</h:ruby>
<h:ruby>"Hello" + " jruby."</h:ruby>
xfy の bin/common 下に
org.jruby/jruby.jar
org.objectweb/asm-2.2.3,.jar, asm-commons-2.2.3.jar
を置いて、xfy から jruby 関係 jar を呼び出せるようにした。
java 側のコードは簡単。(RubyFunction.java からの抜粋)
public Value call(final Arguments args, final Context context)
throws ValueException {
// Checking the Number of Function Arguments
// example:hello(string) takes single argument
FunctionUtility.checkCount(context, args, 1);// Evaluates the first argument as a string.
final Value v = args.getArgument(0);
final String rubyCode = v.getAsString();
String ans;final Ruby runtime = Ruby.getDefaultInstance();
try {
RubyObject rubyStr = (RubyObject) runtime.evalScript(rubyCode);
ans = rubyStr.toString();
} catch (final Exception e) {
System.err.println(e);
ans = e.getMessage();
}
// Returns the result
return new StringValue(ans);
}
rubyCode には xvcd から jruby スクリプトの文字列が渡ってくる。
rubyStr = (RubyObject) runtime.evalScript(rubyCode) で評価結果を得るだけ。
この例では、単に jruby コードを評価してその結果を得ているだけなので 面白みは少ない。
xvcd でのビジネスロジックや、srcDOM 処理を jruby スクリプトで記述できるようにしていきたい。
« ピックアップ: Adobe Apolloについてのチュートリアルビデオ, 世界最高の紙飛行機, etc... | トップページ | xfy の xpath関数で ruby文を評価させようと試行中:001 »
この記事へのコメントは終了しました。
トラックバック
この記事へのトラックバック一覧です: xfy の xpath関数で ruby文を評価させようと試行中(再挑戦):
» XML XMLニュース [XML XMLニュース]
XMLニュース [続きを読む]
« ピックアップ: Adobe Apolloについてのチュートリアルビデオ, 世界最高の紙飛行機, etc... | トップページ | xfy の xpath関数で ruby文を評価させようと試行中:001 »
コメント