RubyのExecJSをPythonに移植しました
ExecJSはRubyからJavaScriptのコードを実行できるライブラリです。
ExecJSは、もしrubyracerなどJavaScriptライブラリがあればそれを利用し、さもなくばコンピュータからNode.jsなどのインタープリタを検索してきます。JScriptも使えるため、自前でV8をビルドする手間なしに、WindowsでRubyからJavaScriptを利用出来るのです。
Ruby on RailsもExecJSを使っている(らしい)。
これをPythonに移植しました。
>>> import execjs
>>> execjs.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']
>>> ctx = execjs.compile("""
... function add(x, y) {
... return x + y;
... }
... """)
>>> ctx.call("add", 1, 2)
3
PyV8がインストールされていればそれを使い、さもなくばNode.js, JavaScriptCore,SpiderMonkey,JScriptを探してきて使います。
PyPIとGithubで公開しています。
まぁ、PyV8は
$ pip install PyV8
だけでWindowsにも簡単にインストール出来るので、わざわざ遅いPyExecJSを使う必要性は低いと思いますが。