From f52efae271ddb376e7223405c3a74edd7ed598b9 Mon Sep 17 00:00:00 2001 From: Bruno Wagner Goncalves Date: Fri, 1 Aug 2014 17:49:13 -0300 Subject: Changed names according to new convention on the fake service --- fake-service/lib/pixelated_service/sorted_mail.rb | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 fake-service/lib/pixelated_service/sorted_mail.rb (limited to 'fake-service/lib/pixelated_service/sorted_mail.rb') diff --git a/fake-service/lib/pixelated_service/sorted_mail.rb b/fake-service/lib/pixelated_service/sorted_mail.rb new file mode 100644 index 00000000..555d4bd4 --- /dev/null +++ b/fake-service/lib/pixelated_service/sorted_mail.rb @@ -0,0 +1,57 @@ +module PixelatedService + class SortedMail + include Enumerable + + NEWEST_FIRST = lambda do |l,r| + (r.headers[:date] || Time.now) <=> (l.headers[:date] || Time.now) + end + + def initialize(&block) + @mails = {} + @mail_order = [] + @sort_procedure = block || NEWEST_FIRST + end + + def []=(k, v) + @mails[k] = v + @mail_order << v + sort_mail_order! + v + end + + def [](k) + @mails[k] + end + + def delete(k) + v = @mails.delete(k) + @mail_order.delete(v) + v + end + + def add_all(hs) + hs.each do |h,v| + @mails[h] = v + @mail_order << v + end + sort_mail_order! + self + end + + def length + @mails.length + end + + def sort_mail_order! + @mail_order.sort!(&@sort_procedure) + @mail_order.compact! + @mail_order.uniq! + end + + def each + @mail_order.each do |m| + yield m + end + end + end +end -- cgit v1.2.3