bracket_fep plug-in †
エントリ内のブラケット( [ 〜 ] )で囲った特定の文字列を、決まった文字列に変換するための汎用プラグインです。
開発ログ †
Feb 28, 2007
- 初期リリース
- snap_in プラグイン 置換用 bsnap_in プラグイン初期リリース
Sep 18, 2007
- 照合用文字パターン $pattern を bfep の story 関数呼び出し時の引数として、引き渡すように仕様を変更
Nov 23, 2007
- bfep 呼び出し後、変換が行われなかった場合(特にエラー時)は文字列を変換しない(エントリテキストのまま)で保持する仕様に変更
Nov 23, 2007 版全ソース
# Blosxom Plugin : bracket_fep
# Author(s) : kay <info@ellinikonblue.com>
# Version : 2007-11-23
package bracket_fep;
# ---------------------------------------
# Configuration Variable
my $bfep_dir = "$blosxom::plugin_dir/bfep";
# ---------------------------------------
# Variable Definition
my @bfeps;
my %bfeps;
# ---------------------------------------
# Main Routines
$bfep_dir =~ s!/$!!;
sub start {
return 0 unless $bfep_dir; # Directory path for bfep defined?
if (!-e $bfep_dir ) { # Directory for bfep existed?
my $mkdir_r = mkdir( $bfep_dir, 0755 ); # if not exist, make diretory for bfep.
$mkdir_r or return 0;
}
# Plugins for blacket_fep search
if ( -e $bfep_dir and opendir BPLUGINS, $bfep_dir ) {
foreach my $bfep ( grep { /^\w+$/ && -f "$bfep_dir/$_" } sort readdir(BPLUGINS) ) {
my ( $bfep_name, $off ) = $bfep =~ /^\d*(\w+?)(_?)$/;
my $on_off = $off eq '_' ? -1 : 1;
require "$bfep_dir/$bfep";
$bfep_name->start() and ( $bfeps{$bfep_name} = $on_off ) and push @bfeps, $bfep_name;
}
closedir BPLUGINS;
}
return 0 if ( !keys( %bfeps ) ); # if no bfep, bracket_fep is unavailable.
return 1;
}
sub story {
my ( $pkg, $path, $filename, $story_ref, $title_ref, $body_ref ) = @_;
$$body_ref =~ s/\[(.+?)\]/callbfep($1)/gei;
return 1;
}
sub callbfep {
my ( $pattern ) = @_;
my $rtn;
foreach my $bfep ( @bfeps ) {
$bfeps{ $bfep } > 0 and $bfep->can('story') and $rtn = $bfep->story( $pattern ) and last;
}
$rtn = "[$pattern]" if ( !$rtn );
return $rtn;
}
1;
導入 †
プラグイン本体の編集 †
以下の変数を必要に応じて書き換えてください。
- $bfep_dir
- bracket_fep プラグイン は専用のプラグインをインストールするディレクトリを指定します。問題がなければ特に変更する必要がありません。設定したディレクトリはアップロード前に作成するようにしてください。
アップロード †
bracket_fep プラグイン 本体を blosxom のプラグインディレクトリへアップロードし、bracket_fep プラグイン は専用のプラグインを、変数 $bfep_dir で指定したディレクトリへアップロードしてください。
以上の作業が終了すると、インストールした bracket_fep プラグイン は専用のプラグインの機能によって、story フレーバー 内で [ 〜 ] で囲まれた部分が変換されるようになります。
bracket_fep plug-in 用 bfep †
bracket_fep プラグイン は専用のプラグイン bfep(Bracket Front-End Plugin) を追加することで、機能を追加できるようになっており、またその仕様も blosxom のプラグインと酷似しています。
純粋な blosxom のプラグインと大きく違うところは、プラグイン側で用意する関数が start と story だけでよいところ。start 関数で機能のオン、オフを決定し、story 関数で bracket_fep プラグイン から渡される引数 $pattern に応じて処理を行い、その結果を返せばよいだけです*1 。
以下に bfep を作成する際のテンプレートを示します*2。
# Bracket Front End Plugin for blosxom: template
package template;
# ----------------------------
# Configuration Variable
# ----------------------------
# Packege Variable
# ----------------------------
# Main Routines
sub start {
return 1;
}
sub story {
my ( $pkg, $pattern ) = @_;
my $rtn; # is return value.
return $rtn;
}
1;
bfep の実装例 †
以下にいくつか当方で作成した bracket_fep プラグイン 専用のプラグイン( bfep )を紹介します。
- bsnap_asin プラグイン
- Amazon.co.jp の アソシエイトプログラム に参加して、エントリ中に個別商品情報を挿入するためのプラグイン「 asin_complex プラグイン 」を bfep として書き換えたプラグインです。
- bsnap_in プラグイン
- snap_in プラグイン を bfep として書き換えたプラグインです。
- bsnap_hs プラグイン
- snap_in プラグイン を強化し、Highslide JS を使用し、拡大機能を実装した bfep です。ただし、bsnap_in プラグイン と違って、テキストファイルを取り込む機能はありません。
- bsnap_lt プラグイン
- bsnap_hs プラグイン 相当の機能を有しますが、こちらは Lightbox2 を使用し、画像をグルーピングして表示することができるようになっています。テキストファイルを取り込む機能がないことは bsnap_hs プラグイン と同じです。
- bsnap_tx プラグイン
- bsnap_hs プラグイン が、テキストファイルを読み込む機能を実装しなかったために、別立てでテキストファイルを読み込む機能だけを有した bfep を用意しました。snap_in プラグイン から bsnap_hs プラグイン プラグインへの置き換えの際、必要であればご使用ください。