diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-01-21 14:22:39 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2007-01-21 14:22:39 +0000 |
commit | 6e8e503ede5f3a1a55826c94a87a6be9a5daed0e (patch) | |
tree | a8114cfa957215c8cd6471297a5a466e737f73f2 /data/rbot/plugins/quotes.rb | |
parent | 2b50a3fe6ccea7a4adc5665a02aa9901430a86b9 (diff) |
quotefiles are now only saved only if they were changed
Diffstat (limited to 'data/rbot/plugins/quotes.rb')
-rw-r--r-- | data/rbot/plugins/quotes.rb | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/data/rbot/plugins/quotes.rb b/data/rbot/plugins/quotes.rb index 5b496471..aae70592 100644 --- a/data/rbot/plugins/quotes.rb +++ b/data/rbot/plugins/quotes.rb @@ -6,6 +6,7 @@ class QuotePlugin < Plugin def initialize super @lists = Hash.new + @changed = Hash.new Dir["#{@bot.botclass}/quotes/*"].each {|f| next if File.directory?(f) channel = File.basename(f) @@ -16,18 +17,24 @@ class QuotePlugin < Plugin @lists[channel][num] = Quote.new(num, $2, $3, $4) end } + @changed[channel] = false } end def save Dir.mkdir("#{@bot.botclass}/quotes") if(!FileTest.directory?("#{@bot.botclass}/quotes")) @lists.each {|channel, quotes| begin - debug "Writing new quotefile for channel #{channel} ..." - Utils.safe_save("#{@bot.botclass}/quotes/#{channel}") {|file| - quotes.compact.each {|q| - file.puts "#{q.num} | #{q.date} | #{q.source} | #{q.quote}" + if @changed[channel] + debug "Writing new quotefile for channel #{channel} ..." + Utils.safe_save("#{@bot.botclass}/quotes/#{channel}") {|file| + quotes.compact.each {|q| + file.puts "#{q.num} | #{q.date} | #{q.source} | #{q.quote}" + } } - } + @changed[channel] = false + else + debug "Not writing quotefile for channel #{channel} (unchanged)" + end rescue => e error "failed to write quotefile for channel #{channel}!\n#{$!}" error "#{e.class}: #{e}" @@ -35,10 +42,15 @@ class QuotePlugin < Plugin end } end + def cleanup + @lists.clear + @changed.clear + end def addquote(source, channel, quote) @lists[channel] = Array.new if(!@lists.has_key?(channel)) num = @lists[channel].length @lists[channel][num] = Quote.new(num, Time.new, source, quote) + @changed[channel] = true return num end def getquote(source, channel, num=nil) @@ -60,6 +72,7 @@ class QuotePlugin < Plugin if(@lists[channel][num]) @lists[channel][num] = nil @lists[channel].pop if num == @lists[channel].length - 1 + @changed[channel] = true return true end return false |