2001-06-21(木) [長年日記]
■ JisCompactFilter
うぎゃ。それはシンボリックリンクの精のいたずら……(そんな精はいません)。あとで元に戻しておきますだ。とほほ。
行末の「。」は、実際「.」にされてみると読み辛かったので、むしろ変換しない方がいいなー、という個人的な趣味で放置しました。そうしたい人はReplaceFilter使ってもいいわけだし。
■ tDiary
そういうことか。問題を理解しました。なるほど、ある意味バグかも知れませぬ。でも本当の正解は、スタイルシートで字下げするなので、気にしないのがいいかも(ってをい)。
もう一件。namazuで検索したいってことは、1ファイル/日になったテキストファイルができればいいってことかな? だったら、namazuでインデックスを作る前に以下のスクリプトを実行すればよろしいかと。2行目のTDIARY_PATH
をtDiaryをインストールしたディレクトリに、3行目のDEST_PATH
をテキストファイルを置きたいディレクトリに書き換えて実行すれば、テキストファイルが日付分、ぞろぞろできます。PStoreファイルのパーミッションに注意。これで乗り換えられるかな?(笑)
#!/usr/local/bin/ruby -Ke TDIARY_PATH = '/home/sho/src/tdiary' DEST_PATH = '/home/sho/var/namazu/diary' require "#{TDIARY_PATH}/tdiary" load "#{TDIARY_PATH}/tdiary.conf" @data_path.chop! if /\/$/ =~ @data_path Dir["#{@data_path}/??????"].each do |file| next if /\/\d{6}$/ !~ file PStore::new( file ).transaction do |db| db['diary'].each do |date,diary| File::open( "#{DEST_PATH}/#{date}", 'w' ) do |o| o.puts diary.title diary.each_paragraph do |p| o.write p.text end end end end end
スクリプトありがとうございます.同様なことをやろうとしてPStoreファイルのパーミッションではまってました.これで乗り換え決定かな :-)
テキスト出力を一定時間とかさせると、変更の有無なく出力してしまうので、
あまりうれしくありませんでした。
ということでちょっとtdiary本体に手を入れてみました。
<pre>
--- tdiary.rb.orig Sat Jun 16 18:34:26 2001
+++ tdiary.rb Fri Jun 29 11:25:56 2001
@@ -279,7 +279,18 @@
@diaries = {}
end
yield
- db['diary'] = @diaries if @dirty
+ if @dirty
+ db['diary'] = @diaries
+ if @text_output
+ dstr = date.strftime("#{@text_output_dir}/%Y%m%d")
+ File::open(dstr, 'w') do |o|
+ diary = @diaries[dstr]
+ o.puts diary.title
+ diary.each_paragraph do |p| o.write p.text end
+ end
+ end
+ end
+
end
File::delete( filename ) if @diaries.empty?
end
</pre>
tdiary.confの末尾にでも
<pre>
# text output
@text_output = true
@text_output_dir = "/home/densuke/tdiary/text"
</pre>
とすると、日付毎に指定したディレクトリに出してくれます。
これなら更新された時に吐くので必要最小限の更新になると思います。
ごめんなさい、間違えました。
<pre>
--- tdiary.rb.orig Sat Jun 16 18:34:26 2001
+++ tdiary.rb Fri Jun 29 11:32:48 2001
@@ -279,7 +279,18 @@
@diaries = {}
end
yield
- db['diary'] = @diaries if @dirty
+ if @dirty
+ db['diary'] = @diaries
+ if @text_output
+ dstr = date.strftime("%Y%m%d")
+ File::open("#{@text_output_dir}/#{dstr}", 'w') do |o|
+ diary = @diaries[dstr]
+ o.puts diary.title
+ diary.each_paragraph do |p| o.write p.text end
+ end
+ end
+ end
+
end
File::delete( filename ) if @diaries.empty?
end
</pre>
です。dstrの記述にミスがあったです。すいません。