BLOG

Go to top


Grep プラグインを公開します

February 7, 2010 7:11 PM

概要

Movable Type のテンプレート変数を grep して処理を分岐させたり、マッチするもののみを対象に <MTLoop> と同じルールでループ処理することができるテンプレートタグを提供する Grep プラグインを公開します。

テンプレートタグ

以下のようなタグが使用できます。

条件タグ
<MTIfGrep>
モディファイア name で指定されたテンプレート変数(配列である必要があります)を、モディファイア grep で指定したルールで grep し、結果が正である場合に囲んだ内容が処理されます。モディファイア grep に /REGEX/ の形で渡すことで正規表現によるサーチを行うことができます。正規表現オプションとして /REGEX/i のように i を指定すると大文字小文字を区別せずサーチします。
<MTUnlessGrep>
モディファイア name で指定されたテンプレート変数(配列である必要があります)を、モディファイア grep で指定したルールで grep し、結果が負である場合に囲んだ内容が処理されます。モディファイア grep に /REGEX/ の形で渡すことで正規表現によるサーチを行うことができます。正規表現オプションとして /REGEX/i のように i を指定すると大文字小文字を区別せずサーチします。
ブロックタグ
<MTGrep>
モディファイア name で指定されたテンプレート変数(配列である必要があります)を、モディファイア grep で指定したルールで grep し、マッチしたもののみ <MTLoop> と同じルールでループ処理します。モディファイア grep に /REGEX/ の形で渡すことで正規表現によるサーチを行うことができます。正規表現オプションとして /REGEX/i のように i を指定すると大文字小文字を区別せずサーチします。

テンプレートのサンプル

<MTIgnore>テンプレート変数を配列でセットしていく</MTIgnore>

<$MTSetVar name="array" value="test1" function="push"$>
<$MTSetVar name="array" value="test2" function="push"$>
<$MTSetVar name="array" value="test3" function="push"$>
<$MTSetVar name="array" value="test1test2" function="push"$>
<$MTSetVar name="array" value="test3test4" function="push"$>


<MTIgnore>「test3」があるかどうか調べる</MTIgnore>

<$MTSetVar name="search" value="test3"$>
<MTIfGrep name="array" grep="$search">
    Match!
<MTElse>
    Not Match!
</MTIfGrep>

<$MTSetVar name="search" value="test3"$>
<MTUnlessGrep name="array" grep="$search">
    Not Match!
<MTElse>
    Match!
</MTUnlessGrep>


<MTIgnore>正規表現で「3」が入っているものがあるかどうか調べる</MTIgnore>

<$MTSetVar name="search" value="/3/"$>
<MTIfGrep name="array" grep="$search">
    Match!
<MTElse>
    Not Match!
</MTIfGrep>

<$MTSetVar name="search" value="/3/"$>
<MTUnlessGrep name="array" grep="$search">
    Not Match!
<MTElse>
    Match!
</MTUnlessGrep>


<MTIgnore>「test3」があるかどうか調べる</MTIgnore>
<MTIgnore>マッチしたもののみ MTLoop と同じルールでループ処理する</MTIgnore>

<$MTSetVar name="search" value="test3"$>
<MTGrep name="array" grep="$search">
    Match: <$MTVar name="__value__"$>
<MTElse>
    Not Match!
</MTGrep>


<MTIgnore>正規表現で「testtest」が入っているものがあるかどうか調べる</MTIgnore>
<MTIgnore>マッチしたもののみ MTLoop と同じルールでループ処理する</MTIgnore>

<$MTSetVar name="search" value="/testtest/"$>
<MTGrep name="array" grep="$search">
    Match: <$MTVar name="__value__"$>
<MTElse>
    Not Match!
</MTGrep>


<MTIgnore>正規表現オプションとして「i」を指定して大文字小文字を区別せず「TEST」が入っているものがあるかどうか調べる</MTIgnore>
<MTIgnore>マッチしたもののみ MTLoop と同じルールでループ処理する</MTIgnore>

<$MTSetVar name="search" value="/TEST/i"$>
<MTGrep name="array" grep="$search">
    Match: <$MTVar name="__value__"$>
<MTElse>
    Not Match!
</MTGrep>
    

役立つかもしれない場面

複雑なテンプレートを書いていると、どうしてもすでに処理した対象とそうでない対象を分岐しなければならない場面に出くわすことがあるでしょう。ループ中に、すでに処理したものを示す識別子をテンプレート変数に push していき、未処理であるかを確認しながらループを回していけばテンプレートや実行処理を軽量化できると思います。

ダウンロード

Grep プラグイン(約 4 kb)

インストール

解凍してできた Grep フォルダを

/path/to/mt/plugins

内にそのままアップロードしてください。正しくアップロードできていれば、システム・メニューのプラグイン設定画面に Grep プラグインの項目が表示されます。

動作環境

  • Movable Type version 4.2 以上
  • Movable Type version 5.0 以上

追加の Perl モジュールとかは必要ありません。

お願い

基本的にご利用は無償かつ自己責任ですが、継続的な開発、更新のため、よろしければドネーションをご検討ください。以下のボタンから、PayPal を通じて行うことができます。

また、フィードバックもぜひ kenmin.okayama@gmail.com までお送りください。コメントでもかまいません。

Comments


Contact me

Copyright © 2005 - 2017 okayama All rights reserved.