lib/sup/maildir.rb in sup-0.0.8 vs lib/sup/maildir.rb in sup-0.1
- old
+ new
@@ -9,24 +9,28 @@
## pathnames on disk.
class Maildir < Source
SCAN_INTERVAL = 30 # seconds
- def initialize uri, last_date=nil, usual=true, archived=false, id=nil
- super
+ yaml_properties :uri, :cur_offset, :usual, :archived, :id, :labels
+ def initialize uri, last_date=nil, usual=true, archived=false, id=nil, labels=[]
+ super uri, last_date, usual, archived, id
uri = URI(uri)
raise ArgumentError, "not a maildir URI" unless uri.scheme == "maildir"
raise ArgumentError, "maildir URI cannot have a host: #{uri.host}" if uri.host
@dir = uri.path
+ @labels = (labels || []).freeze
@ids = []
@ids_to_fns = {}
@last_scan = nil
@mutex = Mutex.new
end
+ def self.suggest_labels_for path; [] end
+
def check
scan_mailbox
start = @ids.index(cur_offset || start_offset) or raise OutOfSyncSourceError, "Unknown message id #{cur_offset || start_offset}." # couldn't find the most recent email
end
@@ -87,11 +91,11 @@
start = @ids.index(cur_offset || start_offset) or raise OutOfSyncSourceError, "Unknown message id #{cur_offset || start_offset}." # couldn't find the most recent email
start.upto(@ids.length - 1) do |i|
id = @ids[i]
self.cur_offset = id
- yield id, (@ids_to_fns[id] =~ /,.*R.*$/ ? [] : [:unread])
+ yield id, @labels + (@ids_to_fns[id] =~ /,.*R.*$/ ? [] : [:unread])
end
end
def start_offset
scan_mailbox
@@ -119,9 +123,7 @@
rescue SystemCallError, IOError => e
raise FatalSourceError, "Problem reading file for id #{id.inspect}: #{fn.inspect}: #{e.message}."
end
end
end
-
-Redwood::register_yaml(Maildir, %w(uri cur_offset usual archived id))
end