2010年2月22日

Footnote Pluginに全角カッコも処理してもらう

 MTで脚注機能が使えるようになるFootnote Plugin。Wikiみたくかんたんに脚注がつくれるようになります。
 脚注部分はタグで囲うんですがさらにそれを<fn>(こんなふうにカッコして書いておくと)</fn> *1 、表示部分ではそのカッコをはずしてくれるという細かいところにまで気が配られているすぐれたプラグインです。

 でも、このカッコの処理、半角でしかしてくれないので、全角でも処理してくれるように、ちょっと手をくわえてみました。

 いじくるファイルは footnote.pl です。
 気をつけてほしいのは、自分のブログで使っている文字コードでファイルを変更し保存しなければいけないことです。
 変更には文字コードを扱えるエディタを利用してください。

 変更箇所は、footnote.pl の138行目です *2

sub FootnoteString {
  my ( $ctx, $args ) = @_;
  my $fc = $ctx->stash('footnote_count');
  my $tfc = $ctx->stash('footnote_total_count');
  my $footnote = $ctx->stash('footnote_strings');
  my $val = $args->{value_compiled}
    || ( $args->{value} ? _tag_compile($ctx,$args->{value}) : undef );
 
  if ( defined $val ) {
    $fc++; $tfc++;
    $val =~ s/\s+(\w)/ $1/g;
    $val =~ s/(\w)\s+/$1 /g;
    $val =~ tr/\r\n//d;
    $val =~ s|^\s*\((.*?)\)\s*$|$1|g;
    my ( $fn ) = grep { $_->[0] eq $val } @$footnote;
    if ( $fn ) {
      push( @$fn, [ $fc, $tfc ] );

以下の文字列に書き換えます。

    $val =~ s/^\s*(\(|()(.*?)(\)|))\s*$/$2/g;
 $val =~ s/^\s*(\(|)(.*?)(\)|)\s*$/$2/g; の赤い部分が全角のカッコです。 ブログで使用している文字コードにによって、このカッコの文字コードも違ってきます。そのため、ブログで使用している文字コードを確かめて、その文字コードでファイルを変更、保存する必要が生じます。

 変更したら、ファイルをサーバーにアップロードすれば完了です。

*1: こんなふうにカッコして書いておくと
*2: この行、ほんとうは $val =~ s/^\s*\((.*?)\)\s*$/$1/g; なんじゃないのかな?

コメントする