2004年11月20日 (土)

続続 一行目の HTMLCode


概要

続 一行目の HTMLCode」では「一行目の HTMLCode」で紹介した方法が Another HTML-Lint に怒られるという気持ち悪さを解消しました。ところが「貼付けたファイルのアイコンを表示しないでリンクを付ける」にも同じ気持ち悪さがあります。これを一緒に解決してしまう方法です。例によって iblogPatcher を使用しますが、(柔軟な)正規表現によるファイルの一括置換ができるツールであれば何を使っても構いません。

エントリの書き方

まず、添付するファイルがない場合は「一行目の HTMLCode」で紹介した書き方と同じです。

添付するファイルがある場合は、そのファイルを貼付ける場所を「一行目の HTMLCode」によるコメントの中にします。

<HTMLCode><!--</HTMLCode>
<HTMLCode>
ここに添付するファイルを貼付ける
-->

iblogPatcher の設定

続 一行目の HTMLCode」で行った設定は捨てて下さい。その代わり次のような設定を行います。

foreach my $page (keys %CHANGE_CONTENT::Conf) {
    # コメントされた br 要素と添付ファイルリンクを削除する
    push @{$CHANGE_CONTENT::Conf{$page}}, {
        'condition' => '<!--<br ¥/>(?:[^-]|-(?!->))*-->',
        'replace'   => '',
        'option'    => 'gs',
    };
}

これは CHANGE_CONTENT.plugin のための設定で、<!--<br ¥/> から最初に現れる --> までを、そういう箇所を残らず削除せよという意味です。

バリエーション

次のようにエントリを書くとします。

<HTMLCode><!--</HTMLCode>
<HTMLCode>
ここに添付するファイルを貼付ける-->

この場合は、<!--<br ¥/> から最初に現れる --> までの間に改行は登場しません。必ずこのようにするのでしたら上の設定を若干変えて次のようにできます。

foreach my $page (keys %CHANGE_CONTENT::Conf) {
    # コメントされた br 要素と添付ファイルリンクを削除する
    push @{$CHANGE_CONTENT::Conf{$page}}, {
        'condition' => '<!--<br ¥/>(?:[^-]|-(?!->))*-->',
        'replace'   => '',
        'option'    => 'g',
    };
}

optioin の値から s が抜けています。s は改行があっても一行のように処理しなさいという意味です。s がないと適用される範囲が一行毎になります。もちろんここでいう一行とはエントリを編集する画面の一行ではなく XHTML ソース上の一行です。

多分これで完璧です。


Posted: 00:28    | Comment | Trackback


以下、類似エントリです。