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 --- .../lib/pixelated_service/mail_scope_filter.rb | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 fake-service/lib/pixelated_service/mail_scope_filter.rb (limited to 'fake-service/lib/pixelated_service/mail_scope_filter.rb') diff --git a/fake-service/lib/pixelated_service/mail_scope_filter.rb b/fake-service/lib/pixelated_service/mail_scope_filter.rb new file mode 100644 index 00000000..dae6d99e --- /dev/null +++ b/fake-service/lib/pixelated_service/mail_scope_filter.rb @@ -0,0 +1,70 @@ +module PixelatedService + module MailScopeFilter + include Enumerable + + def initialize(c) + @c = c + end + + def each + @c.each do |m| + yield m if retain?(m) + end + end + + class Default + include MailScopeFilter + + def initialize(c) + super + @tags = [Tags.get('sent'), Tags.get('trash'), Tags.get('drafts')] + end + + def retain?(m) + !(@tags.any? { |t| m.is_tagged?(t) }) + end + + class << self + def +(o) + o + end + end + end + + class All + include MailScopeFilter + + def initialize(c) + super + @t = Tags.get('trash') + end + + def retain?(m) + !m.is_tagged?(@t) + end + + class << self + def +(o) + All + end + end + end + + def self.tagged_with(n) + t = Tags.get(n) + c = Class.new + c.send :include, MailScopeFilter + c.send :define_method, :retain? do |m| + m.is_tagged?(t) + end + c.class.send :define_method, :+ do |o| + All === o ? All : self + end + c + end + + Trash = tagged_with('trash') + Sent = tagged_with('sent') + Drafts = tagged_with('drafts') + end +end -- cgit v1.2.3