JavaScriptが他のプラットフォームを侵略しています。Node.jsによってサーバサイドを侵略し、React NativeやTitaniumがスマートフォンアプリ開発を攻めています。 他の言語はそのままで良いわけではありません。逆にJavaScriptを攻めるのです。今回はGroovyのコードをJavaScriptに変換できるGrooscriptを紹介します。

Grooscriptの使い方

Grooscriptの例です。クラスも使えます。さらにメソッドがない場合の呼び出しもできたりします。これはGroovyとして実行できるコードです。

class Hello {
  def methodMissing(String name, args) {
    println "Hello ${name}!"
  }
}

def hello = new Hello()
hello.Groovy()
hello.Javascript()
hello.grooscript()

そして、これを変換すると次のようなコードになります。これはJavaScriptです。

var gs = require('grooscript');
function Hello() {
  var gSobject = gs.init('Hello');
  gSobject.clazz = { name: 'Hello', simpleName: 'Hello'};
  gSobject.clazz.superclass = { name: 'java.lang.Object', simpleName: 'Object'};
  gSobject['methodMissing'] = function(name, args) {
    return gs.println("Hello " + (name) + "!");
  }
  if (arguments.length == 1) {gs.passMapToObject(arguments[0],gSobject);};
  
  return gSobject;
};
var hello = Hello();
gs.mc(hello,"Groovy",[]);
gs.mc(hello,"Javascript",[]);
gs.mc(hello,"grooscript",[]);

では実際に実行してみます。node、Groovyのどちらも同じ結果が得られています。

$ groovy source.groovy 
Hello Groovy!
Hello Javascript!
Hello grooscript!

$ groovy source.groovy 
Hello Groovy!
Hello Javascript!
Hello grooscript!

Grooscriptを使うことでGroovyで書いたコードをNode.js上で実行できるようになります。Groovyが使えない環境でもGrooscriptを使うことで同じコードで実行できるようになるでしょう(すべてが動くわけではありませんが)。

GrooscriptはGroovy製のオープンソース・ソフトウェア(Apache License 2.0)です。

Grooscript chiquitinxx/grooscript