perform()のreturnの書き方によってEthna_InfoManager内で無限ループが起きる

昨日、Ethnaのコミッターの mumumuさん、id:sotarokさん、id:ichii386さん、他にもEthnaを実際に開発で使用しているという方々と総勢7名で焼肉食べながらEthnaについていろいろ話し合ってきました。
Ethna 焼肉会議 議事録


Ethna 焼肉会議を開催します - 肉とご飯と甘いもの @ sotarok
肉mtg - いちいの日記
mumumuの日記: Ethna Yakiniku-Con
などなど。



で、Ethnaが今後、どのようになっていくのかは、まだわかりませんし、新しく始める人は他のフレームワークを選ぶかと個人的には思ったりして、それでもEthnaを使っている理由って何だろうなんて考えたりしながら二日酔いの中仕事をしていました。
Ethnaを使う理由のひとつに、開発者が全員日本人というのも利点の一つとしてあるのかなぁと思ったりもして、日本語でバグ報告とか、こうしたいと言えば、がんばって辞書と格闘して英語を書かなくても通じるというのは、いいことだったりするのではないかと。
もちろん、日本内の狭い世界に閉じこもってしまうとうことになったりもしますが、だったら逆に、日本の携帯への親和性とか、いろいろアプローチもあるのではないかと思ったりもしてみました。


で、バグとかやりたいこととかがあがってきた時に、すばやく柔軟に対応が出来ればいいなーと思って、現状の報告経路をながめていたら、SourceFoge.JPのバグで放置しっぱなしのがあったので、さすがによくないと思い、最新版で再現するかを確認してみました。
指定された対象が見つかりません - SourceForge.JP
再現したので、パッチ書きました。
Ethna_InfoManagerはテストが無く、しかも処理が複雑なので、ちょっと自信が持てないので他のコミッタの方の意見待ち中です。

http://maru.cc/~maru/ethna/ethna_infomanager/Ethna_InfoManager_analyzeActionScript.patch



しかし、ソースを追ってみて、知らない関数にであったり、知らない定数があったりとか。
PHP: token_get_all - Manual
PHP: パーサトークンの一覧 - Manual
まだまだ、知らないことがありますね。


しかも、info.phpの一覧を出すために、構文解析っぽいことをしているとは思わなかった。
すげー力技だけど面白い。