net-imap 0.4.8 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of net-imap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -1
- data/lib/net/imap/fetch_data.rb +2 -2
- data/lib/net/imap/response_parser.rb +2 -0
- data/lib/net/imap/sequence_set.rb +80 -15
- data/lib/net/imap.rb +1 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4748c4c7176f5267d0efbb4e6dcf4a1e4ffcbf236ac808d798937485b8b7e509
|
4
|
+
data.tar.gz: cdf7efa6adad2ebea59d19f0580d65581b3fc3ae2d23bb2394acf58dd809bd2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 241c1c908e0c59253d0a29779a1feeb8709cf25ab21be425d1e169783cad4b1feab7c5c4db79ed1ebdf658e9aab7b46e3ba53b79f381605ed96efe0b9497e9d7
|
7
|
+
data.tar.gz: 0d7e42911c110ef1530e94512ae720a9fd992aede9c406fd706fb553f11097cab6ee842aa3d63466effd4fda6255e23647a0dc8a964012738a44448a85d0a47c
|
data/.github/workflows/test.yml
CHANGED
data/lib/net/imap/fetch_data.rb
CHANGED
@@ -131,8 +131,8 @@ module Net
|
|
131
131
|
#
|
132
132
|
# A transformation of #attr, with all the keys converted to upper case.
|
133
133
|
#
|
134
|
-
# Header field names are case-preserved but not
|
135
|
-
#
|
134
|
+
# Header field names are case-preserved but not case-sensitive, so this is
|
135
|
+
# used by #header_fields and #header_fields_not.
|
136
136
|
def attr_upcase; attr.transform_keys(&:upcase) end
|
137
137
|
|
138
138
|
# :call-seq:
|
@@ -1929,6 +1929,8 @@ module Net
|
|
1929
1929
|
end
|
1930
1930
|
end
|
1931
1931
|
|
1932
|
+
# This allows illegal "]" in flag names (Gmail),
|
1933
|
+
# or "\*" in a FLAGS response (greenmail).
|
1932
1934
|
def quirky__flag_list(name)
|
1933
1935
|
match_re(Patterns::QUIRKY_FLAGS_LIST, "quirks mode #{name}")[1]
|
1934
1936
|
.scan(Patterns::QUIRKY_FLAG)
|
@@ -60,6 +60,21 @@ module Net
|
|
60
60
|
# set = Net::IMAP::SequenceSet[1, 2, [3..7, 5], 6..10, 2048, 1024]
|
61
61
|
# set.valid_string #=> "1:10,55,1024:2048"
|
62
62
|
#
|
63
|
+
# == Normalized form
|
64
|
+
#
|
65
|
+
# When a sequence set is created with a single String value, that #string
|
66
|
+
# representation is preserved. SequenceSet's internal representation
|
67
|
+
# implicitly sorts all entries, de-duplicates numbers, and coalesces
|
68
|
+
# adjacent or overlapping ranges. Most enumeration methods and offset-based
|
69
|
+
# methods use this normalized representation. Most modification methods
|
70
|
+
# will convert #string to its normalized form.
|
71
|
+
#
|
72
|
+
# In some cases the order of the string representation is significant, such
|
73
|
+
# as the +ESORT+, <tt>CONTEXT=SORT</tt>, and +UIDPLUS+ extensions. Use
|
74
|
+
# #entries or #each_entry to enumerate the set in its original order. To
|
75
|
+
# preserve #string order while modifying a set, use #append, #string=, or
|
76
|
+
# #replace.
|
77
|
+
#
|
63
78
|
# == Using <tt>*</tt>
|
64
79
|
#
|
65
80
|
# \IMAP sequence sets may contain a special value <tt>"*"</tt>, which
|
@@ -151,7 +166,7 @@ module Net
|
|
151
166
|
# +nil+ if the object cannot be converted to a compatible type.
|
152
167
|
# - #cover? (aliased as #===):
|
153
168
|
# Returns whether a given object is fully contained within +self+.
|
154
|
-
# - #intersect
|
169
|
+
# - #intersect? (aliased as #overlap?):
|
155
170
|
# Returns whether +self+ and a given object have any common elements.
|
156
171
|
# - #disjoint?:
|
157
172
|
# Returns whether +self+ and a given object have no common elements.
|
@@ -186,10 +201,14 @@ module Net
|
|
186
201
|
#
|
187
202
|
# === Methods for Iterating
|
188
203
|
#
|
189
|
-
# - #each_element: Yields each number and range in the set and
|
190
|
-
# +self+.
|
191
|
-
# - #elements (aliased as #to_a):
|
192
|
-
#
|
204
|
+
# - #each_element: Yields each number and range in the set, sorted and
|
205
|
+
# coalesced, and returns +self+.
|
206
|
+
# - #elements (aliased as #to_a): Returns an Array of every number and range
|
207
|
+
# in the set, sorted and coalesced.
|
208
|
+
# - #each_entry: Yields each number and range in the set, unsorted and
|
209
|
+
# without deduplicating numbers or coalescing ranges, and returns +self+.
|
210
|
+
# - #entries: Returns an Array of every number and range in the set,
|
211
|
+
# unsorted and without deduplicating numbers or coalescing ranges.
|
193
212
|
# - #each_range:
|
194
213
|
# Yields each element in the set as a Range and returns +self+.
|
195
214
|
# - #ranges: Returns an Array of every element in the set, converting
|
@@ -222,6 +241,8 @@ module Net
|
|
222
241
|
# - #add?: If the given object is not an element in the set, adds it and
|
223
242
|
# returns +self+; otherwise, returns +nil+.
|
224
243
|
# - #merge: Merges multiple elements into the set; returns +self+.
|
244
|
+
# - #append: Adds a given object to the set, appending it to the existing
|
245
|
+
# string, and returns +self+.
|
225
246
|
# - #string=: Assigns a new #string value and replaces #elements to match.
|
226
247
|
# - #replace: Replaces the contents of the set with the contents
|
227
248
|
# of a given object.
|
@@ -502,6 +523,7 @@ module Net
|
|
502
523
|
def intersect?(other)
|
503
524
|
valid? && input_to_tuples(other).any? { intersect_tuple? _1 }
|
504
525
|
end
|
526
|
+
alias overlap? intersect?
|
505
527
|
|
506
528
|
# Returns +true+ if the set and a given object have no common elements,
|
507
529
|
# +false+ otherwise.
|
@@ -655,6 +677,18 @@ module Net
|
|
655
677
|
end
|
656
678
|
alias << add
|
657
679
|
|
680
|
+
# Adds a range or number to the set and returns +self+.
|
681
|
+
#
|
682
|
+
# Unlike #add, #merge, or #union, the new value is appended to #string.
|
683
|
+
# This may result in a #string which has duplicates or is out-of-order.
|
684
|
+
def append(object)
|
685
|
+
tuple = input_to_tuple object
|
686
|
+
entry = tuple_to_str tuple
|
687
|
+
tuple_add tuple
|
688
|
+
@string = -(string ? "#{@string},#{entry}" : entry)
|
689
|
+
self
|
690
|
+
end
|
691
|
+
|
658
692
|
# :call-seq: add?(object) -> self or nil
|
659
693
|
#
|
660
694
|
# Adds a range or number to the set and returns +self+. Returns +nil+
|
@@ -787,7 +821,18 @@ module Net
|
|
787
821
|
normalize!
|
788
822
|
end
|
789
823
|
|
790
|
-
# Returns an array of ranges and integers
|
824
|
+
# Returns an array of ranges and integers and <tt>:*</tt>.
|
825
|
+
#
|
826
|
+
# The entries are in the same order they appear in #string, with no
|
827
|
+
# sorting, deduplication, or coalescing. When #string is in its
|
828
|
+
# normalized form, this will return the same result as #elements.
|
829
|
+
# This is useful when the given order is significant, for example in a
|
830
|
+
# ESEARCH response to IMAP#sort.
|
831
|
+
#
|
832
|
+
# Related: #each_entry, #elements
|
833
|
+
def entries; each_entry.to_a end
|
834
|
+
|
835
|
+
# Returns an array of ranges and integers and <tt>:*</tt>.
|
791
836
|
#
|
792
837
|
# The returned elements are sorted and coalesced, even when the input
|
793
838
|
# #string is not. <tt>*</tt> will sort last. See #normalize.
|
@@ -854,22 +899,42 @@ module Net
|
|
854
899
|
# Related: #elements, #ranges, #to_set
|
855
900
|
def numbers; each_number.to_a end
|
856
901
|
|
857
|
-
# Yields each number or range in #
|
902
|
+
# Yields each number or range in #string to the block and returns +self+.
|
858
903
|
# Returns an enumerator when called without a block.
|
859
904
|
#
|
860
|
-
#
|
905
|
+
# The entries are yielded in the same order they appear in #tring, with no
|
906
|
+
# sorting, deduplication, or coalescing. When #string is in its
|
907
|
+
# normalized form, this will yield the same values as #each_element.
|
908
|
+
#
|
909
|
+
# Related: #entries, #each_element
|
910
|
+
def each_entry(&block)
|
911
|
+
return to_enum(__method__) unless block_given?
|
912
|
+
return each_element(&block) unless @string
|
913
|
+
@string.split(",").each do yield tuple_to_entry str_to_tuple _1 end
|
914
|
+
self
|
915
|
+
end
|
916
|
+
|
917
|
+
# Yields each number or range (or <tt>:*</tt>) in #elements to the block
|
918
|
+
# and returns self. Returns an enumerator when called without a block.
|
919
|
+
#
|
920
|
+
# The returned numbers are sorted and de-duplicated, even when the input
|
921
|
+
# #string is not. See #normalize.
|
922
|
+
#
|
923
|
+
# Related: #elements, #each_entry
|
861
924
|
def each_element # :yields: integer or range or :*
|
862
925
|
return to_enum(__method__) unless block_given?
|
863
|
-
@tuples.each do
|
864
|
-
if min == STAR_INT then yield :*
|
865
|
-
elsif max == STAR_INT then yield min..
|
866
|
-
elsif min == max then yield min
|
867
|
-
else yield min..max
|
868
|
-
end
|
869
|
-
end
|
926
|
+
@tuples.each do yield tuple_to_entry _1 end
|
870
927
|
self
|
871
928
|
end
|
872
929
|
|
930
|
+
private def tuple_to_entry((min, max))
|
931
|
+
if min == STAR_INT then :*
|
932
|
+
elsif max == STAR_INT then min..
|
933
|
+
elsif min == max then min
|
934
|
+
else min..max
|
935
|
+
end
|
936
|
+
end
|
937
|
+
|
873
938
|
# Yields each range in #ranges to the block and returns self.
|
874
939
|
# Returns an enumerator when called without a block.
|
875
940
|
#
|
data/lib/net/imap.rb
CHANGED
@@ -717,7 +717,7 @@ module Net
|
|
717
717
|
# * {IMAP URLAUTH Authorization Mechanism Registry}[https://www.iana.org/assignments/urlauth-authorization-mechanism-registry/urlauth-authorization-mechanism-registry.xhtml]
|
718
718
|
#
|
719
719
|
class IMAP < Protocol
|
720
|
-
VERSION = "0.4.
|
720
|
+
VERSION = "0.4.9"
|
721
721
|
|
722
722
|
# Aliases for supported capabilities, to be used with the #enable command.
|
723
723
|
ENABLE_ALIASES = {
|
@@ -2883,7 +2883,6 @@ module Net
|
|
2883
2883
|
else
|
2884
2884
|
normalize_searching_criteria(search_keys)
|
2885
2885
|
end
|
2886
|
-
normalize_searching_criteria(search_keys)
|
2887
2886
|
synchronize do
|
2888
2887
|
send_command(cmd, sort_keys, charset, *search_keys)
|
2889
2888
|
clear_responses("SORT").last || []
|
@@ -2896,7 +2895,6 @@ module Net
|
|
2896
2895
|
else
|
2897
2896
|
normalize_searching_criteria(search_keys)
|
2898
2897
|
end
|
2899
|
-
normalize_searching_criteria(search_keys)
|
2900
2898
|
synchronize do
|
2901
2899
|
send_command(cmd, algorithm, charset, *search_keys)
|
2902
2900
|
clear_responses("THREAD").last || []
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-imap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shugo Maeda
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-12-
|
12
|
+
date: 2023-12-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: net-protocol
|