VarHandlerプラグイン
Category : MTplugin
先日Six Apart - Movable Type プラグインディレクトリに登録されて初めて知ったのですが、Movable Type のプラグインを数多く開発されている藤本壱さん作で、「VarHandlerプラグイン」というプラグインが存在します。
基本コンセプトは、拙作 AutoIncrementalVar プラグインと同じく、「<$MTSetVar$>, <$MTGetVar$> の拡張」。
ということで、両プラグインを比較・検証してみました。
提供されるMTタグの比較
提供されるテンプレートタグに機能の重複はないので、それぞれの提供するテンプレートタグをまとめておきます。
| テンプレートタグ | 機能・備考 |
|---|---|
| <$MTAddVar$>, <$MTSubVar$>, <$MTMultVar$>, <$MTDivVar$> | 変数と定数、または変数と他の変数の間で加減乗除を行う変数タグ(出力無し) |
| <$MTConcatVar$> | 変数と定数、または変数どうしを文字列として連結する変数タグ(出力無し) |
| <$MTEqualVar$> | 変数に定数、または他の変数の値を代入(コピー)する変数タグ(出力無し) |
| <MTTagValueVar> | 変数にコンテナの内容を処理した結果を代入するコンテナタグ。 MT3.3x以降の<MTSetVarBlock>と機能的には全く同じ(MT3.2x以下で<MTSetVarBlock>の代わりに使用可能) |
| <MTIfNumVar>, <MTIfStrVar> | 変数の値と他の定数や変数の値とを比較する条件タグ。 <MTIfNumVar>は数値として、<MTIfStrVar>は文字列として比較します。 |
| テンプレートタグ | 機能・備考 |
|---|---|
| <$MTSetVarAutoIncremental$> | 変数の初期値を設定する変数タグ(出力無し) その変数に対して自動数え上げカウンターとしての初期設定も施す |
| <$MTGetVarWithIncrement$> | 変数値を出力する変数タグ 内部でカウンタ値を数え上げする |
| <$MTGetVarWithoutIncrement$> | 変数値を出力する変数タグ 内部でカウンタ値を数え上げしない |
| <$MTIncrementVar$> | 変数値を数え上げする変数タグ(出力無し) |
機能比較
| VarHandler | AutoIncrementalVar |
|---|---|
| 自由な値で足し算・引き算ができる | <$MTSetVarAutoIncremental$>の step 属性で指定した値で加算される。マイナスの値を指定すれば減算も可能 |
| 自由な値でかけ算・割り算ができる | (カウンター機能に焦点を絞っているため、乗除算には非対応) |
| 文字列連結ができる | (カウンター機能に焦点を絞っているため、文字列演算には非対応) |
| 他の変数値や、ブロックの処理結果を変数に代入できる | (MT3.3x以降ならば、標準の<MTSetVarBlock>タグを使用することで実現可能) |
| 変数値と他の値との比較をする条件タグを標準で提供(<MTIfNumVar>, <MTIfStrVar>) | 他の値との比較は、Compareプラグイン等を使用することで実現可能 |
| カウンターとしても使用可能(<$MTAddVar name="○○" value="1"$>とし、<$MTGetVar name="○○"$>とすることで) | カウンター機能に特化している(自動的に数え上げる <$MTGetVarWithIncrement$>, <$MTIncrementVar$> タグを用意) |
| (対応する機能無し) | ダイナミック・パブリッシングに対応 |
その他 考察
正直、VarHandlerプラグインの存在を先に知っていたら、AutoIncrementalVarプラグインなんて公開しなかったかもしれません(汗)
だって、AutoIncrementalVarでできることは全てVarHandlerでできちゃいますし、それ以上のことができるわけですから。
謂わば、AutoIncrementalVarを互換性を保って汎用的にしたものが「VarHandlerプラグイン」になっていますから。
ただ、VarHandlerは現状、Perl版のみで、PHP版(=ダイナミック・パブリッシング対応版)は存在しないようなので、その点だけはAtoIncrementalVarも負けてないということになるでしょうか。
今度時間があったら、VarHandlerのダイナミック・パブリッシング対応版を自作してみようかな。





コメントする