RapydScript – Pythonっぽく書けるJavaScript代替言語
JavaScript代替言語が数多く出回り始めていますが、その一種で見られるのは既存のプログラミング言語に似せて作られてJavaScriptに変換されるタイプです。 RapydScriptもその系統です。ベースになっている言語はPythonで、Python風に書いてJavaScriptへ変換できるコンパイラーがRapydScriptになります。
インストール
インストールはnpmで簡単にできます。
$ npm install rapydscript -g
使ってみる
ではさっそく使ってみましょう。例えば以下のようなコードがあります。
$ cat test.pyj
def greet():
alert("Hello World!")
普通にPythonっぽいですね。そして変換を実行します。-oを付けると出力先ファイル名が指定できます。特に指定しない場合は標準出力にJavaScriptが出ます。
$ rapydscript test.pyj -o test.js
$ cat test.js
(function(){function greet(){alert("Hello World!")}})();
デフォルトではfunctionで囲まれますが、-bオプションを付ければbareになります。
続いてDOMを扱うデモです。
def computeFactorial():
n = document.getElementById("user-input").value
document.getElementById("result").innerHTML = factorial(n)
bareにして変換すると次のようになります。
function computeFactorial(){var n;n=document.getElementById("user-input").value;document.getElementById("result").innerHTML=factorial(n)}
さらに別なデモ。ハッシュを使った場合です。
params = {
width: 50,
height: 30,
onclick: def(event):
alert("you clicked me")
,
onmouseover: def(event):
$(this).css('background', 'red')
,
onmouseout: def(event):
# reset the background
$(this).css('background', '')
}
変換すると以下のようになります。
params={width:50,height:30,onclick:function(event){alert("you clicked me")},onmouseover:function(event){$(this).css("background","red")},onmouseout:function(event){$(this).css("background","")}}
コメントは自動で消えるようになっています。
Pythonらしくデコレーターがサポートされています。
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
hello()
この結果はhello worldになります。JavaScriptに変換した場合は次のようになります。
function makebold(fn){function wrapped(){return"<b>"+fn()+"</b>"}return wrapped}function makeitalic(fn){function wrapped(){return"<i>"+fn()+"</i>"}return wrapped}function hello(){return"hello world"}hello=makebold(makeitalic(hello));hello()
RapydScriptを使ったデモアプリとして、アステロイド風ゲームなどが公開されています。
CoffeeScriptはRubyのように書けるのが特徴ですが、RapydScriptはPython風に書くことができます。サーバサイドもPythonで書いているならば言語が似た形に統一できるのは良いかもしれません。もちろん全ての文法が使えるわけではないですが、JavaScriptの文法がどうも…という人にとってはちょうど良いのではないでしょうか。 RapydScriptはnode/JavaScript製のオープンソース・ソフトウェア(Apache License 2.0)です。 atsepkov/RapydScript