X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fsup%2Fmbox%2Floader.rb;h=030759483289f2ee6bd115b818e9dfecb5a986de;hb=ef1d8a9333f8d261deeb88a7c1cb0cc58d7b6563;hp=831c71705ed11f8dab9a781c323ff2e5b2fd04d3;hpb=14cd17b3a1d4448282dc97c10a0063b575bf2e07;p=sup diff --git a/lib/sup/mbox/loader.rb b/lib/sup/mbox/loader.rb index 831c717..0307594 100644 --- a/lib/sup/mbox/loader.rb +++ b/lib/sup/mbox/loader.rb @@ -1,17 +1,18 @@ require 'rmail' require 'uri' +require 'set' module Redwood module MBox class Loader < Source + include SerializeLabelsNicely yaml_properties :uri, :cur_offset, :usual, :archived, :id, :labels - attr_accessor :labels ## uri_or_fp is horrific. need to refactor. - def initialize uri_or_fp, start_offset=0, usual=true, archived=false, id=nil, labels=[] + def initialize uri_or_fp, start_offset=0, usual=true, archived=false, id=nil, labels=nil @mutex = Mutex.new - @labels = ((labels || []) - LabelManager::RESERVED_LABELS).uniq.freeze + @labels = Set.new((labels || []) - LabelManager::RESERVED_LABELS) case uri_or_fp when String @@ -47,7 +48,7 @@ class Loader < Source raise OutOfSyncSourceError, "mbox file is smaller than last recorded message offset. Messages have probably been deleted by another client." end end - + def start_offset; 0; end def end_offset; File.size @f; end @@ -113,7 +114,7 @@ class Loader < Source need_blank = File.exists?(@filename) && !File.zero?(@filename) File.open(@filename, "a") do |f| f.puts if need_blank - f.puts "From #{from_email} #{date}" + f.puts "From #{from_email} #{date.utc}" yield f end end @@ -168,7 +169,7 @@ class Loader < Source end self.cur_offset = next_offset - [returned_offset, (self.labels + [:unread]).uniq] + [returned_offset, (@labels + [:unread])] end end