JSmarty.Pluginオブジェクトついて

JSmartyにはJavaScriptSmartyする為にJSmarty.SystemやJSmarty.Templatecオブジェクト存在していてその辺の仕様に関するエントリです。一番、便利であろうJSmarty.Pluginの仕様について。

JSmarty.Pluginで扱えるJSファイルについて

これは2パターン存在します。一つ目は、ファイル名が{型名}.{関数名}.js(modifier.foo.jsなど)で関数名が、jsmarty_{型名}_{関数名}で定義されるJSmartyのプラグインです。もう一つ目は、{名前空間}.{関数名}.js(php.sprintf.js)で関数名がファイル名の関数名と同じものとの2つになります。

// 1つ目 : modifier.foo.js
function jsmarty_modifier_foo(){}

// 2つ目 : php.sprintf.js
function sprintf(){}

JSmarty.Pluginのメソッドなど

JSの動的呼出しするのに利用するのは主に以下の関数です。

JSmarty.Plugin.get(プラグイン名, プラグインの保存先のディレクトリ)

第一引数に指定されたプラグインを呼出し結果を返します。

// 変数に別名を付けてあげることも可能
var alias = JSmarty.Plugin.get('php.sprintf','plugins');
alias("%02d","2");
// 以下の呼び出しても可能
JSmarty.Pluguin.get('php.sprintf')("%02d","2");
JSmarty.Plugin.importer

グローバル領域にプラグインをインポートする関数です。

JSmarty.Plugin.importer(
    'php.sprintf', 'php.range'
);
sprintf("%05d","1"); // 00001
range('a','z'); // a, b, c … x, y, z

補足

グローバル汚染させず

JSmarty.Pluginでロードされたグローバル領域を汚染しません。

JSmarty.Plugin.get('php.strtr');
typeof(strtr); // undefined
xxx.*.jsの呼出し。

php.*.jsではなくても呼び出しは可能です。例えばdom.*.jsを呼び出すためには以下のようにします。この場合は、関数名はdom.*.jsの*部分と一致させる必要はあります。

//以下のように名前空間を登録
JSmarty.Plugin.additional.dom = true;
JSmarty.Plugin.get('dom.foo');

名前空間の登録がめんどいのでややこいので改修の余地がありそうですね(--;