EthnaのSmartyプラグインを独立したファイルにしてみた

IRCのwideの%Ethnaチャンネルで話していたことがきっかけなのですが、Ethnaで組み込み用意されている Smartyプラグインがあるが、現状は Ethna_SmartyPlugin.phpというファイルにまとめて書かれている。
それを、Renderer/Ethna_Renderer_Smarty,php内の _setDefaultPlugin() で、すべての関数を setPluginしている。
これだと、使用していない関数まで追加処理が動いてしまっている。
Smartyでは、命名規則に合わせたプラグインを作成しておくと、必要になったときに読み込まれるという機能があるので、そちらを使った方がいいと前々から思っていた。


今回、IRCで話したこともあったのと、ちょうど沖縄に来るタイミングで飛行機に乗っている間に時間があったので Smartyプラグインをファイルに分割してみた。
動かしながらテストしたが、少し違和感のある動作をする部分もあったので、それを直してから本体に取り込めればと思います。


とりあえず現状。
http://maru.cc/tmp/ethna_smarty_plugin.patch
http://maru.cc/tmp/ethna_smarty_plugins.tar.gz
ごらんの通りtmp領域なので、取り込まれたら消しちゃいます。


Smartyプラグインは、class/Plugin/Smarty/ 以下に置くようにしています。


i18n系の関数の挙動を整えたり、number_formatの 0を渡したときの挙動とか変えて、テストも書かないとですね。
テストを書くのに、今までの、test/Ethna_SmartyPlugin_Test.php ではなく、ファイル単位の方がいいかと思うので、テストが下階層もみれるようにテストを修正してから、テストを書いてですね。


いろいろやりたいことがあって楽しい。

追記(2009-01-21)

遅くなりましたが、Smartyのプラグイン分割をEthnaのtrunkにコミットしました。
そろそろ公開される Ethna-2.5.0 preview3(beta) に取り込まれる予定です。