image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007-03-20 | トップページ | 2007-03-23 »

2007-03-21

2007-03-21

xfy の xpath関数で ruby文を評価させようと試行中(再挑戦)

xfy の xpath関数で ruby文を評価させようと試行中
という記事を投稿したことがある。今回 それに再度 try したら、うまくできた。

Xfytutorialplugin20070321

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 スクリプトで記述できるようにしていきたい。

« 2007-03-20 | トップページ | 2007-03-23 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク