▼ 2008/08/09(土) day記法不具合でしょうか
adiaryのday記法って、あまり使う機会がないかもしれませんが、詳細は以下のような感じです。
結局、[day:2008/08/05]と書いても2箇所目で評価されて8月の日記へのリンクを生成していました。ほんとは[day:20080805]とかかけたほうがいいんでしょうけど、
フォーマットに関するドキュメントとかあったほうがいいかもしれませんね。
-日付指定は[day:7:7日の記事]や[day:7/7]、そのほか[day:2006/6]とも書けます。この記法で、[day:2008/08/05]と書くと2008/08/05という風にリンク先が8月の日記になります。*1(私が使い方を間違えているだけかもしれません。)で、ソース(/path/to/adiary/lib/Satsuki/TextParser/TagPlugin/Tag_adiary.pm)を見てみましたが、2箇所ほど修正したほうがいいのかなという感じのもの見つけました。
-その日を指定したい場合は単純に[day:]や [day:今日の日記]で行けます。
記事key指定機能、日付指定機能 - adiary開発日誌
--- Tag_adiary.pm.org 2008-02-07 01:50:48.000000000 +0900
+++ Tag_adiary.pm 2008-08-09 21:30:34.000000000 +0900
@@ -104,7 +104,7 @@
$url .= $opt;
$name2 = $ROBJ->tm_printf("%Y/%m/%d", $opt);
- } elsif ($opt =~ /^[\d\/\-]+$/) { # 数字 と /
+ } elsif ($opt =~ /^\d+[\/\-]\d+[\/\-]{0,1}\d{0,4}$/) { # 数字 と /
$name2 = $opt;
$opt =~ tr/-/\//;
my @ymd = split('/', $opt);
@@ -112,7 +112,7 @@
my $year = pop(@ymd);
unshift(@ymd, $year);
}
- if (999 < $ymd[0] && $ymd[0] < 10000 && $ymd[1] < 13) {
+ if (999 < $ymd[0] && $ymd[0] < 10000 && $ymd[1] < 13 && $ymd[2] eq '') {
# YYYY/MM
$url .= sprintf("%04d%02d", $ymd[0], $ymd[1]);
} else {
1箇所目はそう問題にはならないかも知れませんが、”数字 か /”になってます。なので後に評価される
} elsif ($opt =~ /^\d+$/) { # DD MDD MMDD
を潰してしまっています。結局、[day:2008/08/05]と書いても2箇所目で評価されて8月の日記へのリンクを生成していました。ほんとは[day:20080805]とかかけたほうがいいんでしょうけど、
} elsif ($opt =~ /^\d+$/) { # DD MDD MMDD
$name2 = $opt;
if ($opt < 100) { $day=$opt; }
elsif ($opt < 1000) { $day=substr($opt, 1); $mon=substr($opt, 0, 1); }
elsif ($opt < 10000) { $day=substr($opt, 2); $mon=substr($opt, 0, 2); }
$url .= sprintf("%04d%02d%02d", $year, $mon, $day);
} elsif ($name eq '') {
なんとなく空気読みました(笑)フォーマットに関するドキュメントとかあったほうがいいかもしれませんね。
*1 : adiary Ver2.00でfixされました。
- TB-URL http://d.matu.biz/06/tb/
1: nabe 2008年08月10日(日) 午前2時42分
あぁーこれはまずいですね。ご指摘ありがとうございます。修正させて頂きます(^^;
2: matu 2008年08月10日(日) 午後0時32分
nabeさん、恐縮です。今後も微力ながら協力させていただきます(^^