Class: ImapGuard::Query
- Inherits:
-
Array
- Object
- Array
- ImapGuard::Query
- Defined in:
- lib/imap_guard/query.rb
Overview
All methods return self so they can be chained.
Query is a neat DSL to help you generate IMAP search queries.
Instance Method Summary collapse
-
#before(date) ⇒ self
Messages whose internal date (disregarding time and timezone) is earlier than the specified date.
-
#cc(string) ⇒ self
Messages that contain the specified string in the envelope structure’s CC field.
-
#deleted ⇒ self
Messages with the
\Deleted
flag set. -
#from(string) ⇒ self
Messages that contain the specified string in the envelope structure’s FROM field.
-
#not(search_key = nil) ⇒ self
Messages that do not match the specified search key.
-
#or(search_key1 = nil, search_key2 = nil) ⇒ self
Messages that match either search key.
-
#seen ⇒ self
Messages that have the
\Seen
flag set. -
#subject(string) ⇒ self
Messages that contain the specified string in the envelope structure’s SUBJECT field.
-
#to(string) ⇒ self
Messages that contain the specified string in the envelope structure’s TO field.
-
#unanswered ⇒ self
Messages that do not have the
\Answered
flag set. -
#unflagged ⇒ self
Messages that do not have the
\Flagged
flag set. -
#unseen ⇒ self
Messages that do not have the
\Seen
flag set.
Instance Method Details
#before(date) ⇒ self
Messages whose internal date (disregarding time and timezone) is earlier than the specified date.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/imap_guard/query.rb', line 106 def before(date) date = case date when String date when Integer (Date.today - date).strftime "%e-%b-%Y" when Date date.strftime "%e-%b-%Y" else raise ArgumentError, "#{date.inspect} is invalid." end self << "BEFORE" << date end |
#cc(string) ⇒ self
Messages that contain the specified string in the envelope structure’s CC field.
95 96 97 |
# File 'lib/imap_guard/query.rb', line 95 def cc(string) self << "CC" << string end |
#deleted ⇒ self
Messages with the \Deleted
flag set.
33 34 35 |
# File 'lib/imap_guard/query.rb', line 33 def deleted self << "DELETED" end |
#from(string) ⇒ self
Messages that contain the specified string in the envelope structure’s FROM field.
81 82 83 |
# File 'lib/imap_guard/query.rb', line 81 def from(string) self << "FROM" << string end |
#not(search_key = nil) ⇒ self
Messages that do not match the specified search key.
65 66 67 68 69 |
# File 'lib/imap_guard/query.rb', line 65 def not(search_key = nil) self << "NOT" send(search_key) if search_key self end |
#or(search_key1 = nil, search_key2 = nil) ⇒ self
Reverse polish notation is expected, i.e. OR <search-key1> <search-key2>
Messages that match either search key.
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/imap_guard/query.rb', line 46 def or(search_key1 = nil, search_key2 = nil) self << "OR" if search_key1 && search_key2 send(search_key1) send(search_key2) elsif search_key1 || search_key2 raise ArgumentError, "You must give either zero or two arguments." end self end |
#seen ⇒ self
Messages that have the \Seen
flag set.
9 10 11 |
# File 'lib/imap_guard/query.rb', line 9 def seen self << "SEEN" end |
#subject(string) ⇒ self
Messages that contain the specified string in the envelope structure’s SUBJECT field.
74 75 76 |
# File 'lib/imap_guard/query.rb', line 74 def subject(string) self << "SUBJECT" << string end |
#to(string) ⇒ self
Messages that contain the specified string in the envelope structure’s TO field.
88 89 90 |
# File 'lib/imap_guard/query.rb', line 88 def to(string) self << "TO" << string end |
#unanswered ⇒ self
Messages that do not have the \Answered
flag set.
21 22 23 |
# File 'lib/imap_guard/query.rb', line 21 def unanswered self << "UNANSWERED" end |
#unflagged ⇒ self
Messages that do not have the \Flagged
flag set.
27 28 29 |
# File 'lib/imap_guard/query.rb', line 27 def unflagged self << "UNFLAGGED" end |
#unseen ⇒ self
Messages that do not have the \Seen
flag set.
15 16 17 |
# File 'lib/imap_guard/query.rb', line 15 def unseen self << "UNSEEN" end |