python-spidermonkey
boost::pythonいれてvectorとか使って遊んでいたら、
id:mopemopeさんが、python-spidermonkey!と叫んでいたので、
とりあえず入れてみる。
所謂Python / JavaScript bridge.で、
jsに対してPythonClassをbindしたり、
jsに対してPythonのメソッドをbindしておいて、
jsをevalする際にPythonのクラスやメソッドを呼ぶようにし向けたり、
といった事ができるんだけども、
まさに、
0.0.1a:
らしく動きがびみょー。
メンテも放置されているので、
公式ドキュメントにも
- JSのエラーメッセージは間違ってます。真に受けないでください。
- メモリリークがあります。
とか書いてあるし、
bind_callable(Pythonのfunctionをjsにバインドする)自体の実装が、
名前(string)とfunctionを関連づける際に
listにtupleをappendするようになっていたりして、わりとハチャメチャな気がする。
(これだと再bindできない)
とりあえずもう少し触ってみる。
jsもSpiderMonkeyの1.6や1.5じゃ動かなくて、
js-1.5-rc6a.tar.gz ならうまくいった。
そもそも動かすためにjsをmakeしてsoとhをコピーしておかなければならないので、
js側のデータ構造が変わると追従できない予感。
ということで、もう少し触ってみます。
何か不審な点があればコメントいただければ見てみるかも。
MEMO:(追記)
- bind_classで同名のclassを再度bindすることができない。
- eval_scriptで一回しくじるとエラーが尾を引く。(新しいスクリプトに古いスクリプトのエラーがでる)
- bind_attributeが意図したように動いていない?(指定した名前でグローバル空間に定義されない)
- bind_objectでjsにインスタンスをbindできるが、jsのスクリプトによって動的にプロパティを追加できたりはしない。