古い記事
ランダムジャンプ
新しい記事
chalow についてのメモ。
ChangeLog の処理を「格納」と「変換」にきっちり分ける方針にした。
で、ChangeLogReader.pm というやっつけな Perl Module を作った。
chalow から読み込み部分を切り出し整理したもの。ChangeLogを泥くさく
パーズしてハッシュに格納するだけ。特にカッコイイことはしていない。
chalow の次バージョンに入れる予定だが、とりあえず以下に置いておく。
<http://chalow.net/misc/ChangeLogReader.pm>(そのうち削除)

以下のように使う。debug_print() の中身も参照のこと。
#!/usr/bin/env perl
use strict;
use ChangeLogReader;
my %all_entries; # hash for all ChangeLog entries
# {XXXX-XX-XX}{"eh"} - Entry header
# {XXXX-XX-XX}{1,2,3,...}{"ho"} - Item header (original text)
# {XXXX-XX-XX}{1,2,3,...}{"co"} - Item content (original text)
# {XXXX-XX-XX}{1,2,3,...}{"cat"} - Category (array)
# {XXXX-XX-XX}{1,2,3,...}{"a"} - Author
# {XXXX-XX-XX}{"message-top"} - Pragma item
# {XXXX-XX-XX}{"message-bottom"} - Pragma item
# {XXXX-XX-XX}{curid} - Item ID manager
my $fn = shift @ARGV;
open(F, $fn) or die;
binmode(F);
my @all_lines = (<F>);
close F;
store_changelog(\%all_entries, \@all_lines);
debug_print(\%all_entries);
chalowでの用途以外にも、ChangeLogを他のフォーマットに変換するとき
なんかに便利かも。 ref. [2004-11-25-5]

以下「格納」の方針についてのメモ。つか、ChangeLogReader.pm の仕様。
- entry, item単位でアクセスできるようにハッシュに格納する。
  プレインテキストで格納し、HTML変換は後の処理で行なう。
- item headerからカテゴリを切り出し格納する。
- item IDを決定する(格納のために必要となる)。
- 非公開item「* p:」を消す。
- プラグマitemを特別キーでハッシュに格納する。
- 格納するitem contentは、末尾の空白・改行の連続は削除する。
- 「*」から始まる行に「: 」がない場合は、行そのものがitem headerに
  なる。
この記事に言及しているこのブログ内の記事