結城浩のはてなブログ

ふと思いついたことをパタパタと書いてます。

スプリッタ

もう1つ考えているのは、日記ファイルをひとつにしてsplitするというもの。形式は…難しいな。たとえば、こんな感じ。

2004-08-23:タイトルA
ここに8/23の日記の内容。
ここに8/23の日記の内容。
ここに8/23の日記の内容。
2004-08-24:タイトルB
ここに8/24の日記の内容。
ここに8/24の日記の内容。
ここに8/24の日記の内容。

どういう順番でもよい。ただ、/^(\d\d\d\d-\d\d-\d\d):(.*)/にマッチする行以降の内容を $1.txtにするというもの。複数箇所に同じ日付があったら警告を出すのかな。
もちろん、単純に毎回splitしちゃうと、全ファイルのタイムスタンプが更新されてしまう。そこで「ファイルに保存する前に、保存内容のMD5値をメモリ上で調べる」という処理を入れると良いだろう。Digest::MD5は標準モジュールだから安心して使える。MD5にコリジョンが起こせるといっても、この実用上はまったく問題はない。