MovableTypeの変数タグでフィボナッチ数を求めようとした場合(?),テンプレートの変数はグローバル変数としてしか扱えないという仕様がテンプレートを煩雑にしています。
そこで,MovableTypeのテンプレートの変数についてローカル変数を任意に定義できるようなプラグインを書いてみました。ローカル変数によってテンプレートの変数を局所化し,相互依存性や複雑性を軽減できると期待できます。
プラグインを導入すると,ブロック内の変数を局所化する<MTLocalBlock>というブロックタグが使用できるようになります。<MTLocalBlock>ブロック内で定義された変数や,既存の変数に加えられた変更は,ブロックの外に戻ると無かったことになります。
グローバル変数とテンプレートタグでフィボナッチ数を求める時に使ったテンプレートを<MTLocalBlock>を用いて書き直すと以下のようになります。フィボナッチ数を再帰で求める部分で fib_x 変数の周辺がよりスマートに書けるようになりました。また,使用されているテンプレートタグの総数が減ったことでパフォーマンスの向上も期待できます。
そもそもテンプレートタグでフィボナッチ数列を計算する意味が(ry
最新版のダウンロードやバグレポートはLocalBlock の trac レポジトリでも行っています。
MTLocalBlockMTLocalBlockが使用された段階で定義されている全ての変数はブロック内に引き継がれますが,ブロック内で変数に対して行われた変更はブロック外の変数には影響を与えません。ブロック内で新しく定義された変数は,ブロック外では未定義となって参照することはできません。ブロック内の変数をブロック外で参照するには後述のglobalsオプションを使用してください。
globalsglobals="^foo$" … 変数 foo はグローバルですglobals="^g_.+$" … g_ で始まる変数は全てグローバルです