@@ -64,6 +64,44 @@ def uid_mapping
6464 end
6565 end
6666
67+ # This replaces the `Data.define` polyfill that's used by net-imap 0.5.
68+ class Data_define__uidvalidity___assigned_uids_ # :no-doc:
69+ attr_reader :uidvalidity , :assigned_uids
70+
71+ def self . []( ...) new ( ...) end
72+ def self . new ( uidvalidity = ( args = false ; nil ) ,
73+ assigned_uids = nil ,
74+ **kwargs )
75+ if kwargs . empty?
76+ super ( uidvalidity : uidvalidity , assigned_uids : assigned_uids )
77+ elsif !args
78+ super
79+ else
80+ raise ArgumentError , "sent both positional and keyword args"
81+ end
82+ end
83+
84+ def ==( other )
85+ self . class == other . class &&
86+ self . uidvalidity == other . uidvalidity &&
87+ self . assigned_uids == other . assigned_uids
88+ end
89+
90+ def eql? ( other )
91+ self . class . eql? ( other . class ) &&
92+ self . uidvalidity . eql? ( other . uidvalidity ) &&
93+ self . assigned_uids . eql? ( other . assigned_uids )
94+ end
95+
96+ def hash ; [ self . class , uidvalidity , assigned_uids ] . hash end
97+
98+ def initialize ( uidvalidity :, assigned_uids :)
99+ @uidvalidity = uidvalidity
100+ @assigned_uids = assigned_uids
101+ freeze
102+ end
103+ end
104+
67105 # >>>
68106 # *NOTE:* <em>AppendUIDData will replace UIDPlusData for +APPENDUID+ in the
69107 # +0.6.0+ release.</em> To use AppendUIDData before +0.6.0+, set
@@ -80,7 +118,7 @@ def uid_mapping
80118 # == Required capability
81119 # Requires either +UIDPLUS+ [RFC4315[https://www.rfc-editor.org/rfc/rfc4315]]
82120 # or +IMAP4rev2+ capability.
83- class AppendUIDData < Data . define ( :uidvalidity , :assigned_uids )
121+ class AppendUIDData < Data_define__uidvalidity___assigned_uids_
84122 def initialize ( uidvalidity :, assigned_uids :)
85123 uidvalidity = Integer ( uidvalidity )
86124 assigned_uids = SequenceSet [ assigned_uids ]
@@ -108,6 +146,50 @@ def size
108146 end
109147 end
110148
149+ # This replaces the `Data.define` polyfill that's used by net-imap 0.5.
150+ class Data_define__uidvalidity___source_uids___assigned_uids_ # :no-doc:
151+ attr_reader :uidvalidity , :source_uids , :assigned_uids
152+
153+ def self . []( ...) new ( ...) end
154+ def self . new ( uidvalidity = ( args = false ; nil ) ,
155+ source_uids = nil ,
156+ assigned_uids = nil ,
157+ **kwargs )
158+ if kwargs . empty?
159+ super ( uidvalidity : uidvalidity ,
160+ source_uids : source_uids ,
161+ assigned_uids : assigned_uids )
162+ elsif !args
163+ super ( **kwargs )
164+ else
165+ raise ArgumentError , "sent both positional and keyword args"
166+ end
167+ end
168+
169+ def initialize ( uidvalidity :, source_uids :, assigned_uids :)
170+ @uidvalidity = uidvalidity
171+ @source_uids = source_uids
172+ @assigned_uids = assigned_uids
173+ freeze
174+ end
175+
176+ def ==( other )
177+ self . class == other . class &&
178+ self . uidvalidity == other . uidvalidity &&
179+ self . source_uids == other . source_uids
180+ self . assigned_uids == other . assigned_uids
181+ end
182+
183+ def eql? ( other )
184+ self . class . eql? ( other . class ) &&
185+ self . uidvalidity . eql? ( other . uidvalidity ) &&
186+ self . source_uids . eql? ( other . source_uids )
187+ self . assigned_uids . eql? ( other . assigned_uids )
188+ end
189+
190+ def hash ; [ self . class , uidvalidity , source_uids , assigned_uids ] . hash end
191+ end
192+
111193 # >>>
112194 # *NOTE:* <em>CopyUIDData will replace UIDPlusData for +COPYUID+ in the
113195 # +0.6.0+ release.</em> To use CopyUIDData before +0.6.0+, set
@@ -134,7 +216,7 @@ def size
134216 # == Required capability
135217 # Requires either +UIDPLUS+ [RFC4315[https://www.rfc-editor.org/rfc/rfc4315]]
136218 # or +IMAP4rev2+ capability.
137- class CopyUIDData < Data . define ( :uidvalidity , :source_uids , :assigned_uids )
219+ class CopyUIDData < Data_define__uidvalidity___source_uids___assigned_uids_
138220 def initialize ( uidvalidity :, source_uids :, assigned_uids :)
139221 uidvalidity = Integer ( uidvalidity )
140222 source_uids = SequenceSet [ source_uids ]
0 commit comments