interpolate_fancyの使い方

/web/blosxom

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

Bloxsomプラグイン「interpolate_fancy」の使い方。ぶっちゃけプラグイン本体のドキュメントにしっかり書いてあるんだけど、日本語のドキュメントはなかなか見つからないので、いちおう纏めてみる。

interpolate_fancyは単純な条件分岐を提供するプラグインで、いわゆるIF文に似たものをBlosxomで使うことができる。<?>と</?>の中に書いたものが条件文の対象となり、<?>に条件を記述する。

  1. <?$categories::title>- $categories::title</?>

↑$categories::titleがあれば(定義されていれば、使えれば、値があれば)表示する。

  1. <?!$categories::title>| A note of notions. On web, tech, and myth.</?>

↑$categories::titleがなければ(未定義ならば、使えなければ、値が空なら)表示する。

  1. <?$writeback::count eq="1">writeback</?>
  2. <?$writeback::count ne="1">writebacks</?>
  3. <?$writeback::count lt="1">no writebacks</?>
  4. <?$writeback::count gt="50">oodles of writebacks</?>

上から$writeback::countが、"1"ならば、"1"でなければ、"1"より小さければ、"50"より大きければ、表示する。

  1. <?$path_info like="(note)">note</?>
  2. <?$path_info unlike="(note|web|myth|recommend|tech|bbs)">home</?>

likeunlikeによる、正規表現(みたいなもの)も扱える。likeがマッチすれば(=~)で、unlikeがマッチしなければ(!~) 、ということ。

サブルーチンを呼び出す

interpolate_fancyでは、自作のサブルーチンを呼び出して、処理結果を受け取ることもできる。

  1. sub strip_html {
  2. my($self, $attributes, $content) = @_;
  3. $content =~ s!</?.+?>!!g;
  4. return $content;
  5. }

↑が「myplugin」に書いたサブルーチンとすると...

  1. <@myplugin.strip_html output="Yes">
  2. Silly <a href="http://www.raelity.org/">me</a>, I plumb
  3. <em>forgot</em> to remove the HTML.
  4. </@myplugin.strip_html>

↑みたいな使い方。第一引数に呼び出された場所が、第二引数に属性値が、第三引数に処理対象が格納され、処理結果が返される。

オマケ

カテゴリごとに表示を変えたい場合、$pathはstoryフレーバーでしか使えないことに注意。headやfootフレーバーでは、$path_infoを使う。このように、特定のフレーバーでしか使えない変数に注意すること。

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。