表形式の日記(日誌みたいな)を,日付自動入力で簡単に追記してゆける「nikkiadd」プラグイン
既存のプラグイン
- メモ書き程度の簡単な日誌を日付入りで作成する場合には,pyukiwikiでは「#comment」か「#article」プラグインを用いることになりますが,
- 「comment」は,下図のように,コメントの末尾に日付が“控えめに”記入され,各コメントが「・」を筆頭にする箇条書きのスタイルなので,日付の位置が前後して読み取りにくいし,特にコメントの文字数が多かったりするとコメント部分も複数行になってさらに読みにくく,日付の流れもわかりにくくなってしまう欠点があります。
- 「article」は掲示板方式で長文が書けますが,下のように,一つずつに見出しや記入者欄が作成され,短いコメントの流れをみたいときには一覧性が悪くなってしまいます。
- その他,「#calendar」もありますが,こちらは一日ごとにページが生成されてしまうので,容量も食いますし一覧性も悪い。そもそもの用途が違う感じです。
- 希望としては,日付欄,コメント欄の二列の表形式で日誌を追記してゆきたいところですが,これはページの編集が必須。PCなら簡単ですが,スマホなど入力機能が劣る機器から書き足すには編集は面倒。なんとか記入フォームの形式で追記を行いたい。
「日付」と「コメント」の二列形式の表を自動追加する「nikkiadd」
- そこで,「#comment」プラグインを改造して,「日付」と「コメント」の2列の表をコメント記入欄の直上か直下に追記して行くようにしたプラグインを試作してみました。
- といっても,単に,「#comment」が追記するデータの日付部分を前に,コメント部分を後ろに入れ替えて,両者を「,」でつないだだけなので,大してコードをいじってはいません。
- データ入力に対する表示は以下のとおり。「#comment」プラグイン同様,コメント欄の上下何れに追記する形式も選べます。
プラグインのコード改造点
- 「sub plugin_nikkiadd_action」の「foreach」文を以下のとおり変更しただけです。
- あとは,フォーム生成用の「sub plugin_nikkiadd_convert」で,プラグイン名や変数名を改造もとの「#コッメンt」プラグインとかぶらないものに変更すればOK
foreach (@lines) {
$line = $_;
if (/^#nikkiadd(\(.*\))?$/ && (++$_nikkiadd_no == $::form{nikkiadd_no})) {
if ($::form{above} == 1) {
$line = ("\," . $datestr . "\," . $comment . "\n\n" . $line );
unless ($lastdata) {
$postdata =~ s/\n$//;
}
} else {
$line .= ("\n" . "\," . $datestr . "\," . $comment );
}
}
$postdata .= $line . "\n" ;
$lastdata = $line;
}
Counter: 1161,
today: 2,
yesterday: 1