gmail 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +13 -0
  4. data/.rubocop_todo.yml +239 -0
  5. data/.travis.yml +19 -0
  6. data/CHANGELOG.md +75 -18
  7. data/Gemfile +1 -1
  8. data/README.md +214 -131
  9. data/Rakefile +11 -0
  10. data/gmail.gemspec +8 -8
  11. data/lib/gmail.rb +31 -18
  12. data/lib/gmail/client.rb +11 -7
  13. data/lib/gmail/client/base.rb +52 -48
  14. data/lib/gmail/client/plain.rb +9 -5
  15. data/lib/gmail/client/xoauth.rb +23 -6
  16. data/lib/gmail/client/xoauth2.rb +39 -0
  17. data/lib/gmail/imap_extensions.rb +150 -0
  18. data/lib/gmail/labels.rb +33 -16
  19. data/lib/gmail/mailbox.rb +60 -42
  20. data/lib/gmail/message.rb +142 -101
  21. data/lib/gmail/version.rb +2 -2
  22. data/spec/account.yml.obfus +2 -0
  23. data/spec/gmail/client/base_spec.rb +5 -0
  24. data/spec/gmail/client/plain_spec.rb +168 -0
  25. data/spec/gmail/client/xoauth2_spec.rb +186 -0
  26. data/spec/gmail/client/xoauth_spec.rb +5 -0
  27. data/spec/gmail/client_spec.rb +5 -0
  28. data/spec/gmail/imap_extensions_spec.rb +12 -0
  29. data/spec/gmail/labels_spec.rb +18 -0
  30. data/spec/{mailbox_spec.rb → gmail/mailbox_spec.rb} +14 -14
  31. data/spec/gmail/message_spec.rb +181 -0
  32. data/spec/gmail_spec.rb +21 -21
  33. data/spec/recordings/gmail/_new_connects_with_client_and_give_it_context_when_block_given.yml +28 -0
  34. data/spec/recordings/gmail/_new_connects_with_gmail_service_and_return_valid_connection_object.yml +28 -0
  35. data/spec/recordings/gmail/_new_does_not_raise_error_when_couldn_t_connect_with_given_account.yml +13 -0
  36. data/spec/recordings/gmail/_new_raises_error_when_couldn_t_connect_with_given_account.yml +13 -0
  37. data/spec/recordings/gmail_client_plain/instance/_connection_automatically_logs_in_to_gmail_account_when_it_s_called.yml +42 -0
  38. data/spec/recordings/gmail_client_plain/instance/delivers_inline_composed_email.yml +42 -0
  39. data/spec/recordings/gmail_client_plain/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -0
  40. data/spec/recordings/gmail_client_plain/instance/does_not_raise_error_even_though_gmail_account_is_invalid.yml +13 -0
  41. data/spec/recordings/gmail_client_plain/instance/labels/checks_if_there_is_given_label_defined.yml +196 -0
  42. data/spec/recordings/gmail_client_plain/instance/labels/creates_given_label.yml +151 -0
  43. data/spec/recordings/gmail_client_plain/instance/labels/removes_existing_label.yml +146 -0
  44. data/spec/recordings/gmail_client_plain/instance/labels/returns_list_of_all_available_labels.yml +113 -0
  45. data/spec/recordings/gmail_client_plain/instance/properly_logs_in_to_valid_gmail_account.yml +42 -0
  46. data/spec/recordings/gmail_client_plain/instance/properly_logs_out_from_gmail.yml +42 -0
  47. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox.yml +109 -0
  48. data/spec/recordings/gmail_client_plain/instance/properly_switches_to_given_mailbox_using_block_style.yml +109 -0
  49. data/spec/recordings/gmail_client_plain/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -0
  50. data/spec/recordings/gmail_client_xo_auth2/instance/does_not_log_in_when_given_gmail_account_is_invalid.yml +13 -0
  51. data/spec/recordings/gmail_client_xo_auth2/instance/labels/checks_if_there_is_given_label_defined.yml +27 -0
  52. data/spec/recordings/gmail_client_xo_auth2/instance/labels/creates_given_label.yml +39 -0
  53. data/spec/recordings/gmail_client_xo_auth2/instance/labels/removes_existing_label.yml +39 -0
  54. data/spec/recordings/gmail_client_xo_auth2/instance/labels/returns_list_of_all_available_labels.yml +27 -0
  55. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_in_to_valid_gmail_account.yml +15 -0
  56. data/spec/recordings/gmail_client_xo_auth2/instance/properly_logs_out_from_gmail.yml +15 -0
  57. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox.yml +40 -0
  58. data/spec/recordings/gmail_client_xo_auth2/instance/properly_switches_to_given_mailbox_using_block_style.yml +40 -0
  59. data/spec/recordings/gmail_client_xo_auth2/instance/raises_error_when_given_gmail_account_is_invalid_and_errors_enabled.yml +13 -0
  60. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/all/localizes_into_the_appropriate_label.yml +116 -0
  61. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/drafts/localizes_into_the_appropriate_label.yml +116 -0
  62. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/flagged/localizes_into_the_appropriate_label.yml +116 -0
  63. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/important/localizes_into_the_appropriate_label.yml +116 -0
  64. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/inbox/localizes_into_the_appropriate_label.yml +42 -0
  65. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/junk/localizes_into_the_appropriate_label.yml +116 -0
  66. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/sent/localizes_into_the_appropriate_label.yml +116 -0
  67. data/spec/recordings/gmail_labels/localize/when_given_the_xl_is_tflag/trash/localizes_into_the_appropriate_label.yml +116 -0
  68. data/spec/recordings/gmail_mailbox/instance/counts_all_emails.yml +277 -0
  69. data/spec/recordings/gmail_mailbox/instance/finds_messages.yml +586 -0
  70. data/spec/recordings/gmail_mailbox/on_initialize/sets_client_and_name.yml +42 -0
  71. data/spec/recordings/gmail_mailbox/on_initialize/works_in_inbox_by_default.yml +42 -0
  72. data/spec/recordings/gmail_message/initialize/sets_prefetch_attrs.yml +578 -0
  73. data/spec/recordings/gmail_message/initialize/sets_uid_and_mailbox.yml +580 -0
  74. data/spec/recordings/gmail_message/instance_methods/deletes_itself.yml +637 -0
  75. data/spec/recordings/gmail_message/instance_methods/marks_itself_read.yml +682 -0
  76. data/spec/recordings/gmail_message/instance_methods/marks_itself_unread.yml +686 -0
  77. data/spec/recordings/gmail_message/instance_methods/moves_from_one_tag_to_other.yml +862 -0
  78. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label.yml +776 -0
  79. data/spec/recordings/gmail_message/instance_methods/removes_a_given_label_with_old_method.yml +776 -0
  80. data/spec/recordings/gmail_message/instance_methods/sets_given_label.yml +690 -0
  81. data/spec/recordings/gmail_message/instance_methods/sets_given_label_with_old_method.yml +691 -0
  82. data/spec/spec_helper.rb +34 -10
  83. data/spec/support/imap_mock.rb +129 -0
  84. data/spec/support/obfuscation.rb +52 -0
  85. metadata +79 -30
  86. data/TODO.md +0 -12
  87. data/lib/gmail/client/imap_extensions.rb +0 -54
  88. data/spec/client_spec.rb +0 -178
  89. data/spec/message_spec.rb +0 -51
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3e753fcd22946f3ad280435f97d76e1eb4ec7e0
4
- data.tar.gz: 4bfe8802c7750714025da3b52a1e15bfdc46ea02
3
+ metadata.gz: 90b7ae4b3b4c3666bc7232be016a91ae05a7e1bc
4
+ data.tar.gz: b86c8c8d608a6c5a7166ae549c159e2c55d4bfb1
5
5
  SHA512:
6
- metadata.gz: 084f0398746da01275b728cee3a700c02c6f43a8fd67e6e3826da737c51547cf1a547cae8073adf48f0c582df66a80b98025c3b686d4100ef478d76d8b31df1c
7
- data.tar.gz: 5a7c3721ed3e94d74ea092d756d2826b63496c8f4ec5f8abdcda1ed6b7ea6c441ba602a9b089e40e2ca11facbfc487733c292d97961d6f30cce9120b1c5f9e99
6
+ metadata.gz: 8ccedc507d735bc696cbfbe62846b83245259ecade924e70df330d5df797bd59a8bd21a69a72acc9f8dbe00b311b2ef1e766972e02d903e4f29638bfc2b27a0a
7
+ data.tar.gz: 99dcd8b0ddfdd958196f4bba9d19721a54db6bf8c9b96359d2dfcdd04e2e320a3aacf3971c631831d2ba191873a2405b729639dfa29dd2c84e89ca08b5efa80e
data/.gitignore CHANGED
@@ -18,6 +18,7 @@ coverage
18
18
  rdoc
19
19
  pkg
20
20
  Gemfile.lock
21
+ *.gem
21
22
 
22
23
  ## PROJECT::SPECIFIC
23
24
  *.rdb
@@ -0,0 +1,13 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ Style/HashSyntax:
4
+ EnforcedStyle: hash_rockets
5
+ SupportedStyles:
6
+ - ruby19
7
+ - hash_rockets
8
+
9
+ Style/StringLiterals:
10
+ EnforcedStyle: single_quotes
11
+ SupportedStyles:
12
+ - single_quotes
13
+ - double_quotes
@@ -0,0 +1,239 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2015-01-19 09:48:24 -0500 using RuboCop version 0.28.0.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ # Configuration parameters: AllowSafeAssignment.
10
+ Lint/AssignmentInCondition:
11
+ Enabled: false
12
+
13
+ # Offense count: 1
14
+ # Cop supports --auto-correct.
15
+ Lint/BlockAlignment:
16
+ Enabled: false
17
+
18
+ # Offense count: 1
19
+ Lint/LiteralInCondition:
20
+ Enabled: false
21
+
22
+ # Offense count: 2
23
+ Lint/RescueException:
24
+ Enabled: false
25
+
26
+ # Offense count: 1
27
+ Lint/ShadowingOuterLocalVariable:
28
+ Enabled: false
29
+
30
+ # Offense count: 1
31
+ # Cop supports --auto-correct.
32
+ Lint/StringConversionInInterpolation:
33
+ Enabled: false
34
+
35
+ # Offense count: 1
36
+ Lint/UnderscorePrefixedVariableName:
37
+ Enabled: false
38
+
39
+ # Offense count: 2
40
+ # Cop supports --auto-correct.
41
+ Lint/UnusedBlockArgument:
42
+ Enabled: false
43
+
44
+ # Offense count: 7
45
+ # Cop supports --auto-correct.
46
+ Lint/UnusedMethodArgument:
47
+ Enabled: false
48
+
49
+ # Offense count: 2
50
+ Lint/UselessAssignment:
51
+ Enabled: false
52
+
53
+ # Offense count: 12
54
+ Lint/Void:
55
+ Enabled: false
56
+
57
+ # Offense count: 10
58
+ Metrics/AbcSize:
59
+ Max: 1000
60
+
61
+ # Offense count: 2
62
+ # Configuration parameters: CountComments.
63
+ Metrics/ClassLength:
64
+ Max: 1000
65
+
66
+ # Offense count: 5
67
+ Metrics/CyclomaticComplexity:
68
+ Max: 1000
69
+
70
+ # Offense count: 67
71
+ # Configuration parameters: AllowURI, URISchemes.
72
+ Metrics/LineLength:
73
+ Max: 1000
74
+
75
+ # Offense count: 12
76
+ # Configuration parameters: CountComments.
77
+ Metrics/MethodLength:
78
+ Max: 1000
79
+
80
+ # Offense count: 3
81
+ Metrics/PerceivedComplexity:
82
+ Max: 1000
83
+
84
+ # Offense count: 27
85
+ # Cop supports --auto-correct.
86
+ Style/Alias:
87
+ Enabled: false
88
+
89
+ # Offense count: 1
90
+ # Cop supports --auto-correct.
91
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
92
+ Style/AlignParameters:
93
+ Enabled: false
94
+
95
+ # Offense count: 21
96
+ # Cop supports --auto-correct.
97
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
98
+ Style/AndOr:
99
+ Enabled: false
100
+
101
+ # Offense count: 18
102
+ # Cop supports --auto-correct.
103
+ Style/Blocks:
104
+ Enabled: false
105
+
106
+ # Offense count: 4
107
+ # Cop supports --auto-correct.
108
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
109
+ Style/BracesAroundHashParameters:
110
+ Enabled: false
111
+
112
+ # Offense count: 2
113
+ # Cop supports --auto-correct.
114
+ Style/ColonMethodCall:
115
+ Enabled: false
116
+
117
+ # Offense count: 2
118
+ # Cop supports --auto-correct.
119
+ Style/CommentIndentation:
120
+ Enabled: false
121
+
122
+ # Offense count: 18
123
+ Style/Documentation:
124
+ Enabled: false
125
+
126
+ # Offense count: 5
127
+ Style/DoubleNegation:
128
+ Enabled: false
129
+
130
+ # Offense count: 1
131
+ Style/EachWithObject:
132
+ Enabled: false
133
+
134
+ # Offense count: 1
135
+ # Cop supports --auto-correct.
136
+ Style/ElseAlignment:
137
+ Enabled: false
138
+
139
+ # Offense count: 1
140
+ # Cop supports --auto-correct.
141
+ Style/EmptyLiteral:
142
+ Enabled: false
143
+
144
+ # Offense count: 4
145
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
146
+ Style/FormatString:
147
+ Enabled: false
148
+
149
+ # Offense count: 2
150
+ # Configuration parameters: MaxLineLength.
151
+ Style/IfUnlessModifier:
152
+ Enabled: false
153
+
154
+ # Offense count: 6
155
+ # Cop supports --auto-correct.
156
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
157
+ Style/IndentHash:
158
+ Enabled: false
159
+
160
+ # Offense count: 2
161
+ # Cop supports --auto-correct.
162
+ # Configuration parameters: Width.
163
+ Style/IndentationWidth:
164
+ Enabled: false
165
+
166
+ # Offense count: 1
167
+ # Cop supports --auto-correct.
168
+ Style/InfiniteLoop:
169
+ Enabled: false
170
+
171
+ # Offense count: 5
172
+ Style/Lambda:
173
+ Enabled: false
174
+
175
+ # Offense count: 1
176
+ Style/ModuleFunction:
177
+ Enabled: false
178
+
179
+ # Offense count: 4
180
+ # Cop supports --auto-correct.
181
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
182
+ Style/MultilineOperationIndentation:
183
+ Enabled: false
184
+
185
+ # Offense count: 2
186
+ # Cop supports --auto-correct.
187
+ Style/NegatedIf:
188
+ Enabled: false
189
+
190
+ # Offense count: 1
191
+ # Cop supports --auto-correct.
192
+ Style/NumericLiterals:
193
+ MinDigits: 1000
194
+
195
+ # Offense count: 3
196
+ # Cop supports --auto-correct.
197
+ # Configuration parameters: PreferredDelimiters.
198
+ Style/PercentLiteralDelimiters:
199
+ Enabled: false
200
+
201
+ # Offense count: 2
202
+ # Cop supports --auto-correct.
203
+ # Configuration parameters: AllowMultipleReturnValues.
204
+ Style/RedundantReturn:
205
+ Enabled: false
206
+
207
+ # Offense count: 1
208
+ # Cop supports --auto-correct.
209
+ Style/RedundantSelf:
210
+ Enabled: false
211
+
212
+ # Offense count: 7
213
+ # Cop supports --auto-correct.
214
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
215
+ Style/SignalException:
216
+ Enabled: false
217
+
218
+ # Offense count: 1
219
+ # Cop supports --auto-correct.
220
+ Style/SpecialGlobalVars:
221
+ Enabled: false
222
+
223
+ # Offense count: 234
224
+ # Cop supports --auto-correct.
225
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
226
+ Style/StringLiterals:
227
+ Enabled: false
228
+
229
+ # Offense count: 1
230
+ # Cop supports --auto-correct.
231
+ # Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
232
+ Style/TrivialAccessors:
233
+ Enabled: false
234
+
235
+ # Offense count: 1
236
+ # Cop supports --auto-correct.
237
+ # Configuration parameters: WordRegex.
238
+ Style/WordArray:
239
+ MinSize: 1000
@@ -0,0 +1,19 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - 2.0.0
4
+ - 2.1.5
5
+ - 2.2.0
6
+ - rbx
7
+ - jruby
8
+
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: rbx
12
+ - rvm: jruby
13
+
14
+ # http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/
15
+ sudo: false
16
+
17
+ # script:
18
+ # - bundle exec rspec
19
+ # - bundle exec rubocop
@@ -1,27 +1,75 @@
1
- # Gmail gem changelog
1
+ # Gmail Gem Changelog
2
+
3
+ ## Unreleased
4
+
5
+ * Your change here
6
+
7
+
8
+ ## 0.5.0 - 2015-01-26
9
+
10
+ * Migrate primary repo to https://github.com/gmailgem/gmail with new project governance (@johnnyshields, @bootstraponline)
11
+ * Create logo for project (@johnnyshields)
12
+ * Implement IMAP recorder for specs and get all specs passing (@jcarbo)
13
+ * Add Rubocop to porject and fix offenses (@jcarbo)
14
+ * Fix: #connect method not invoking a block (@jcarbo)
15
+ * Support X-GM-RAW (raw Gmail search syntax) in filter query (@bootstraponline)
16
+ * Bugfix: Improperly processing labels containing parentheses (@ryanlchan #82)
17
+ * Add support for localizing labels (@ryanlchan #83)
18
+ * Support for XOAuth2 Client (@KieranP)
19
+ * Improve support for non-english labels and mailboxes (@KieranP)
20
+ * Fix IMAP library patch on Ruby 2 (@bootstraponline, @johnnyshields, @awakia)
21
+ * Ability to search emails by a UID filter (@KieranP)
22
+ * Add a way to disconnect the IMAP socket (@KieranP)
23
+ * Better support for timezones (@KieranP)
24
+ * Add `emails_in_batches` method (@KieranP)
25
+ * Gmail Message class: Include X-GM-THRID which is the thread id (@jcarbo)
26
+ * Gmail Message class: Include X-GM-MSGID which is a unique, non-changing email identifier (@KieranP)
27
+ * Gmail Message class: Fetch values in bulk and cache them (performance) (@KieranP)
28
+ * Gmail Message class: Pull FLAGS to make #read? and #starred? methods work (@KieranP)
29
+ * Gmail Message class: Don't mark an email as read when accessing the message (@KieranP)
30
+ * Gmail Message class: Reorganisation and cleanup of method definitions (@KieranP)
31
+ * Bugfix: Fix for XOAuth SMTP settings (@molsder #24)
32
+ * Implement Travis CI (@johnnyshields)
33
+ * Remove legacy dependency on MIME gem (@johnnyshields)
34
+ * Upgrade to RSpec 3.1 and remove Mocha dependency (@johnnyshields, @jcarbo #156)
35
+
36
+
37
+ ## 0.4.2
38
+
39
+ * Fix issue related to Mail gem version lock (@johnnyshields)
40
+
41
+
42
+ ## 0.4.1
43
+
44
+ * n/a
45
+
2
46
 
3
47
  ## 0.4.0
4
48
 
5
- * Added XOAUTH authentication method (Thanks Stefano Bernardi and Nicolas Fouché)
49
+ * Added XOAuth authentication method (Stefano Bernardi, Nicolas Fouché)
6
50
  * Separated clients
7
51
  * Fixed specs
8
52
 
53
+
9
54
  ## 0.3.4
10
55
 
11
- * Fixes in mailbox filters shortcuts (Thanks Benjamin Bock)
56
+ * Fixes in mailbox filters shortcuts (Benjamin Bock)
57
+
12
58
 
13
59
  ## 0.3.3
14
60
 
15
- * Added #expunge to Mailbox (Thanks Benjamin Bock)
16
- * Added more mailbox filters (Thanks Benjamin Bock)
61
+ * Added #expunge to Mailbox (Benjamin Bock)
62
+ * Added more mailbox filters (Benjamin Bock)
17
63
  * Added shortcuts for mailbox filters
18
64
  * Minor bugfixes
19
65
 
66
+
20
67
  ## 0.3.2
21
68
 
22
69
  * Added envelope fetching
23
70
  * Minor bugfixes
24
71
 
72
+
25
73
  ## 0.3.0
26
74
 
27
75
  * Refactoring
@@ -31,28 +79,34 @@
31
79
  * Code cleanup
32
80
  * RSpec for everything
33
81
 
34
- ## 0.1.1 / 2010-05-11
82
+
83
+ ## 0.1.1 - 2010-05-11
35
84
 
36
85
  * Added explicit tmail dependency in gemspec
37
86
  * Added better README tutorial content
38
87
 
39
- ## 0.0.9 / 2010-04-17
88
+
89
+ ## 0.0.9 - 2010-04-17
40
90
 
41
91
  * Fixed content-transfer-encoding when sending email
42
92
 
43
- ## 0.0.8 / 2009-12-23
93
+
94
+ ## 0.0.8 - 2009-12-23
44
95
 
45
96
  * Fixed attaching a file to an empty message
46
97
 
47
- ## 0.0.7 / 2009-12-23
98
+
99
+ ## 0.0.7 - 2009-12-23
48
100
 
49
101
  * Improved multipart message parsing reliability
50
102
 
51
- ## 0.0.6 / 2009-12-21
103
+
104
+ ## 0.0.6 - 2009-12-21
52
105
 
53
106
  * Fixed multipart parsing for when the boundary is marked in quotes.
54
107
 
55
- ## 0.0.5 / 2009-12-16
108
+
109
+ ## 0.0.5 - 2009-12-16
56
110
 
57
111
  * Fixed IMAP initializer to work with Ruby 1.9's net/imap
58
112
  * Better logout depending on the IMAP connection itself
@@ -60,23 +114,26 @@
60
114
  * Improved the MIME-parsing API slightly
61
115
  * Added some tests
62
116
 
63
- ## 0.0.4 / 2009-11-30
64
117
 
65
- * Added label creation (thanks to Justin Perkins / http://github.com/justinperkins)
118
+ ## 0.0.4 - 2009-11-30
119
+
120
+ * Added label creation (@justinperkins)
66
121
  * Made the gem login automatically when first needed
67
122
  * Added an optional block on the Gmail.new object that will login and logout for you
68
- * Added several search options (thanks to Mikkel Malmberg / http://github.com/mikker)
123
+ * Added several search options (@mikker)
124
+
69
125
 
70
- ## 0.0.3 / 2009-11-19
126
+ ## 0.0.3 - 2009-11-19
71
127
 
72
128
  * Fixed MIME::Message#content= for messages without an encoding
73
129
  * Added Gmail#new_message
74
130
 
75
- ## 0.0.2 / 2009-11-18
131
+
132
+ ## 0.0.2 - 2009-11-18
76
133
 
77
134
  * Made all of the examples in the README possible
78
135
 
79
- ## 0.0.1 / 2009-11-18
80
136
 
81
- * Birthday!
137
+ ## 0.0.1 - 2009-11-18
82
138
 
139
+ * Birthday!