@@ -1929,6 +1929,9 @@ def uid_expunge(uid_set)
1929
1929
end
1930
1930
end
1931
1931
1932
+ # :call-seq:
1933
+ # search(criteria, charset = nil) -> result
1934
+ #
1932
1935
# Sends a {SEARCH command [IMAP4rev1 §6.4.4]}[https://www.rfc-editor.org/rfc/rfc3501#section-6.4.4]
1933
1936
# to search the mailbox for messages that match the given search +criteria+,
1934
1937
# and returns a SearchResult. SearchResult inherits from Array (for
@@ -2174,10 +2177,13 @@ def uid_expunge(uid_set)
2174
2177
# result = imap.search(["SUBJECT", "hi there", "not", "new"])
2175
2178
# #=> Net::IMAP::SearchResult[1, 6, 7, 8, modseq: 5594]
2176
2179
# result.modseq # => 5594
2177
- def search ( keys , charset = nil )
2178
- return search_internal ( "SEARCH" , keys , charset )
2180
+ def search ( ... )
2181
+ search_internal ( "SEARCH" , ... )
2179
2182
end
2180
2183
2184
+ # :call-seq:
2185
+ # uid_search(criteria, charset = nil) -> result
2186
+ #
2181
2187
# Sends a {UID SEARCH command [IMAP4rev1 §6.4.8]}[https://www.rfc-editor.org/rfc/rfc3501#section-6.4.8]
2182
2188
# to search the mailbox for messages that match the given searching
2183
2189
# criteria, and returns unique identifiers (<tt>UID</tt>s).
@@ -2187,8 +2193,8 @@ def search(keys, charset = nil)
2187
2193
# capability has been enabled.
2188
2194
#
2189
2195
# See #search for documentation of parameters.
2190
- def uid_search ( keys , charset = nil )
2191
- return search_internal ( "UID SEARCH" , keys , charset )
2196
+ def uid_search ( ... )
2197
+ search_internal ( "UID SEARCH" , ... )
2192
2198
end
2193
2199
2194
2200
# :call-seq:
@@ -3117,18 +3123,11 @@ def enforce_logindisabled?
3117
3123
end
3118
3124
end
3119
3125
3120
- def search_internal ( cmd , keys , charset )
3121
- if keys . instance_of? ( String )
3122
- keys = [ RawData . new ( keys ) ]
3123
- else
3124
- normalize_searching_criteria ( keys )
3125
- end
3126
+ def search_internal ( cmd , keys , charset = nil )
3127
+ keys = normalize_searching_criteria ( keys )
3128
+ args = charset ? [ "CHARSET" , charset , *keys ] : keys
3126
3129
synchronize do
3127
- if charset
3128
- send_command ( cmd , "CHARSET" , charset , *keys )
3129
- else
3130
- send_command ( cmd , *keys )
3131
- end
3130
+ send_command ( cmd , *args )
3132
3131
clear_responses ( "SEARCH" ) . last || [ ]
3133
3132
end
3134
3133
end
@@ -3175,31 +3174,24 @@ def copy_internal(cmd, set, mailbox)
3175
3174
end
3176
3175
3177
3176
def sort_internal ( cmd , sort_keys , search_keys , charset )
3178
- if search_keys . instance_of? ( String )
3179
- search_keys = [ RawData . new ( search_keys ) ]
3180
- else
3181
- normalize_searching_criteria ( search_keys )
3182
- end
3177
+ search_keys = normalize_searching_criteria ( search_keys )
3183
3178
synchronize do
3184
3179
send_command ( cmd , sort_keys , charset , *search_keys )
3185
3180
clear_responses ( "SORT" ) . last || [ ]
3186
3181
end
3187
3182
end
3188
3183
3189
3184
def thread_internal ( cmd , algorithm , search_keys , charset )
3190
- if search_keys . instance_of? ( String )
3191
- search_keys = [ RawData . new ( search_keys ) ]
3192
- else
3193
- normalize_searching_criteria ( search_keys )
3194
- end
3185
+ search_keys = normalize_searching_criteria ( search_keys )
3195
3186
synchronize do
3196
3187
send_command ( cmd , algorithm , charset , *search_keys )
3197
3188
clear_responses ( "THREAD" ) . last || [ ]
3198
3189
end
3199
3190
end
3200
3191
3201
- def normalize_searching_criteria ( keys )
3202
- keys . collect! do |i |
3192
+ def normalize_searching_criteria ( criteria )
3193
+ return RawData . new ( criteria ) if criteria . is_a? ( String )
3194
+ criteria . map do |i |
3203
3195
case i
3204
3196
when -1 , Range , Array
3205
3197
SequenceSet . new ( i )
0 commit comments