]> git.cworth.org Git - sup/blobdiff - lib/sup/mbox/loader.rb
Merge branch 'hook-local-vars' into next
[sup] / lib / sup / mbox / loader.rb
index 831c71705ed11f8dab9a781c323ff2e5b2fd04d3..030759483289f2ee6bd115b818e9dfecb5a986de 100644 (file)
@@ -1,17 +1,18 @@
 require 'rmail'
 require 'uri'
 require 'rmail'
 require 'uri'
+require 'set'
 
 module Redwood
 module MBox
 
 class Loader < Source
 
 module Redwood
 module MBox
 
 class Loader < Source
+  include SerializeLabelsNicely
   yaml_properties :uri, :cur_offset, :usual, :archived, :id, :labels
   yaml_properties :uri, :cur_offset, :usual, :archived, :id, :labels
-  attr_accessor :labels
 
   ## uri_or_fp is horrific. need to refactor.
 
   ## 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
     @mutex = Mutex.new
-    @labels = ((labels || []) - LabelManager::RESERVED_LABELS).uniq.freeze
+    @labels = Set.new((labels || []) - LabelManager::RESERVED_LABELS)
 
     case uri_or_fp
     when String
 
     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
       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
 
   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
     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
       yield f
     end
   end
@@ -168,7 +169,7 @@ class Loader < Source
     end
 
     self.cur_offset = next_offset
     end
 
     self.cur_offset = next_offset
-    [returned_offset, (self.labels + [:unread]).uniq]
+    [returned_offset, (@labels + [:unread])]
   end
 end
 
   end
 end