79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/tdiary/io/default.rb', line 79
def restore_referer( file, diaries )
begin
File::open( file ) do |fh|
fh.flock( File::LOCK_SH )
fh.read.split( /\r?\n\.\r?\n/ ).each do |l|
, body = Default.parse_tdiary( l )
next unless body
body.lines.each do |r|
count, ref = r.chomp.split( / /, 2 )
next unless ref
diaries[['Date']].add_referer( ref.chomp, count.to_i )
end
end
diaries.each do |date,diary|
fname = file.sub( /\.tdr$/, "#{date[6,2]}.tdr" )
File::open( fname, File::WRONLY | File::CREAT ) do |fhr|
fhr.flock( File::LOCK_EX )
fhr.rewind
fhr.truncate( 0 )
fhr.puts( TDiary::TDIARY_MAGIC )
fhr.puts( "Date: #{date}" )
fhr.puts
diary.each_referer( diary.count_referers ) do |count,ref|
fhr.puts( "#{count} #{ref}" )
end
fhr.puts( '.' )
end
end
end
File::rename( file, file.sub( /\.tdr$/, '.tdr~' ) )
rescue Errno::ENOENT
end
return TDiaryBase::DIRTY_NONE
end
|