MovableType の regex_replace モディファイヤでは、Perl の正規表現を用いた強力な文字列操作が行えますが、モデファイヤの記述一回につき適用できる処理は一つだけです。処理を複数回行いたい場合には、その分だけモディファイヤを繰り返し記述しなければなりません。引数に配列を渡せるのですから、一度の記述で連続して処理できるようなプラグインを書いてみました。
V
を受け取り、V[0]
と V[1]
について regex_replace
と同じ動作をしますV[2]
および V[3]
が定義されていた場合、V[3]
と V[4]
について regex_replace
と同じ動作をしますV[2n]
および V[2n+1]
(n は整数)が定義されていた場合、V[2n]
と V[2n+1]
について regex_replace
と同じ動作をしますV[2n]
または V[2n+1]
が未定義の場合、そこで処理を終了します
複数の regex_replace
モディファイアを連続して適用したい場合、従来では以下のように記述することになります。
<mt:unless regex_replace="/quick/g","QUICK" regex_replace="/fox/","FOX" regex_replace="/lazy/g","LAZY"> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. </mt:unless>
プラグインで追加された regex_replaces
モディファイアを使用して以下のように記述できます。
<mt:unless regex_replaces="/quick/g","QUICK","/fox/","FOX","/lazy/g","LAZY"> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. </mt:unless>
regex_replaces
モディファイアは配列変数を受け取ることができます。
// 配列変数に放り込んでから渡すと見易いです <mt:SetVar name="regexs[0]" value="/quick/g"> <mt:SetVar name="regexs[1]" value="QUICK"> <mt:SetVar name="regexs[2]" value="/fox/"> <mt:SetVar name="regexs[3]" value="FOX"> <mt:SetVar name="regexs[4]" value="/lazy/"> <mt:unless regex_replaces="$regexs"> The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. </mt:unless>
// "/lazy/" のペアが未定義の場合でも、エラーにはなりません。無視されるだけです。 The QUICK brown FOX jumps over the lazy dog. The QUICK brown fox jumps over the lazy dog. The QUICK brown fox jumps over the lazy dog.
master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。 plugins
フォルダに配置してください。
プラグインに関する設定はありません。