/ / 最新

swk's log - chalow の make_calendar_table に「前月」「次月」リンクをつける

2005-06-17

* chalow の make_calendar_table に「前月」「次月」リンクをつける [logging][chalow]

だいぶ前にいじった気がするけど,書き忘れてたので思い出しながらメモしておく.

月ごとの日付一覧をカレンダ風に表示するときに,ちまたの blog ツールだと,前月や翌月へのリンクが表示されていたりする.無きゃ困るわけでも,あるとすごく便利なわけでもないけど,何となく欲しくなったのでつけてみた.もうちょっときれいに作れたかもしれないけど,とりあえずこんな感じ. chalow-1.0rc4 がベース.

まず

### HTML ファイルの出力
write_index_page();

の直前に

my @month_array = sort keys %month_page;
my %month_array_rev = ();
for (my $i = 0; $i < @month_array; $i++) {
    $month_array_rev{$month_array[$i]} = $i;
}

を入れる.同じようなものを write_month_page でも作っているので実は二度手間.ここで作ったものを write_month_page でも使うようにすればいいんだけど,面倒なので放っとく.

次に make_calendar_table 内の

    my @wn = ("Su", "Mo", "Tu", "We", "Th", "Fr", "Sa");

の直前に,

    my $idx = $month_array_rev{$ym};
    my ($link_before, $link_after) = ('&lt;&lt;', '&gt;&gt;');
    if ($idx > 0) {
        $link_before =
            '<a href="' . $month_array[$idx - 1] . '.html">&lt;&lt;</a>';
    }
    if ($idx < @month_array - 1) {
        $link_after =
            '<a href="' . $month_array[$idx + 1] . '.html">&gt;&gt;</a>';
    }

を入れる.

同関数のヒアドキュメント内で

<caption><a href="$ym.html">$ym</a></caption>

の代わりに

<tr>
<td align="center" colspan=2>$link_before</td>
<td align="center" colspan=3><a href="$ym.html">$ym</a></td>
<td align="center" colspan=2>$link_after</td>
</tr>

とする.以上.

しかしアレだ.自分仕様パッチが複数の改造目的から成り立っていると,そのうち一部の目的のものだけ切り出して配布するってのが面倒だな.各要素ごとにオリジナルからのパッチの形でまとめて,かつそれらを順不同で適用できるように直交化しておく…とかできると理想だけど,そういうの自動化できたりしませんか.つうかできたら cvs の手動マージ機能とか要らないって話ですかそうですか.

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org