clean-architecture 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +52 -0
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +4 -0
  5. data/Gemfile +0 -2
  6. data/clean-architecture.gemspec +3 -3
  7. data/lib/clean_architecture/queries/http_failure_code.rb +2 -1
  8. data/lib/clean_architecture/version.rb +1 -1
  9. data/sorbet/rbi/gems/activemodel.rbi +2 -1
  10. data/sorbet/rbi/gems/activesupport.rbi +3 -3
  11. data/sorbet/rbi/gems/ast.rbi +1 -0
  12. data/sorbet/rbi/gems/byebug.rbi +3 -2
  13. data/sorbet/rbi/gems/coderay.rbi +1 -0
  14. data/sorbet/rbi/gems/concurrent-ruby.rbi +22 -23
  15. data/sorbet/rbi/gems/docile.rbi +1 -0
  16. data/sorbet/rbi/gems/dry-configurable.rbi +107 -57
  17. data/sorbet/rbi/gems/dry-container.rbi +1 -0
  18. data/sorbet/rbi/gems/dry-core.rbi +1 -0
  19. data/sorbet/rbi/gems/dry-equalizer.rbi +5 -4
  20. data/sorbet/rbi/gems/dry-inflector.rbi +1 -0
  21. data/sorbet/rbi/gems/dry-initializer.rbi +4 -4
  22. data/sorbet/rbi/gems/dry-logic.rbi +12 -11
  23. data/sorbet/rbi/gems/dry-matcher.rbi +2 -1
  24. data/sorbet/rbi/gems/dry-monads.rbi +8 -6
  25. data/sorbet/rbi/gems/dry-schema.rbi +92 -96
  26. data/sorbet/rbi/gems/dry-struct.rbi +32 -60
  27. data/sorbet/rbi/gems/dry-types.rbi +76 -55
  28. data/sorbet/rbi/gems/dry-validation.rbi +34 -30
  29. data/sorbet/rbi/gems/duckface-interfaces.rbi +1 -0
  30. data/sorbet/rbi/gems/i18n.rbi +2 -1
  31. data/sorbet/rbi/gems/jaro_winkler.rbi +2 -1
  32. data/sorbet/rbi/gems/method_source.rbi +1 -0
  33. data/sorbet/rbi/gems/parallel.rbi +2 -1
  34. data/sorbet/rbi/gems/parser.rbi +80 -452
  35. data/sorbet/rbi/gems/pry-byebug.rbi +10 -4
  36. data/sorbet/rbi/gems/pry.rbi +1 -0
  37. data/sorbet/rbi/gems/rainbow.rbi +1 -0
  38. data/sorbet/rbi/gems/rake.rbi +77 -67
  39. data/sorbet/rbi/gems/rb-readline.rbi +1 -0
  40. data/sorbet/rbi/gems/rexml.rbi +589 -0
  41. data/sorbet/rbi/gems/rspec-core.rbi +14 -1
  42. data/sorbet/rbi/gems/rspec-expectations.rbi +2 -34
  43. data/sorbet/rbi/gems/rspec-mocks.rbi +133 -1
  44. data/sorbet/rbi/gems/rspec-support.rbi +4 -1
  45. data/sorbet/rbi/gems/rspec.rbi +1 -0
  46. data/sorbet/rbi/gems/rubocop-rspec.rbi +51 -4
  47. data/sorbet/rbi/gems/rubocop.rbi +746 -442
  48. data/sorbet/rbi/gems/ruby-progressbar.rbi +1 -0
  49. data/sorbet/rbi/gems/simplecov-html.rbi +6 -1
  50. data/sorbet/rbi/gems/simplecov.rbi +144 -17
  51. data/sorbet/rbi/gems/stackprof.rbi +2 -1
  52. data/sorbet/rbi/gems/unicode-display_width.rbi +2 -1
  53. data/sorbet/rbi/hidden-definitions/errors.txt +2040 -890
  54. data/sorbet/rbi/hidden-definitions/hidden.rbi +1431 -2092
  55. data/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +325 -295
  56. data/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +357 -3
  57. data/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +9 -0
  58. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +37 -15
  59. data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +8 -8
  60. data/sorbet/rbi/todo.rbi +1 -4
  61. metadata +11 -23
  62. data/.github/workflows/rspec.yml +0 -21
  63. data/sorbet/rbi/gems/axiom-types.rbi +0 -159
  64. data/sorbet/rbi/gems/codeclimate-engine-rb.rbi +0 -123
  65. data/sorbet/rbi/gems/coercible.rbi +0 -156
  66. data/sorbet/rbi/gems/descendants_tracker.rbi +0 -17
  67. data/sorbet/rbi/gems/equalizer.rbi +0 -22
  68. data/sorbet/rbi/gems/ice_nine.rbi +0 -66
  69. data/sorbet/rbi/gems/kwalify.rbi +0 -339
  70. data/sorbet/rbi/gems/psych.rbi +0 -462
  71. data/sorbet/rbi/gems/reek.rbi +0 -1066
  72. data/sorbet/rbi/gems/thread_safe.rbi +0 -81
  73. data/sorbet/rbi/gems/timecop.rbi +0 -97
  74. data/sorbet/rbi/gems/virtus.rbi +0 -421
@@ -29,7 +29,7 @@ module ActiveModel::Validations
29
29
  params(
30
30
  names: T.any(Symbol, String),
31
31
  if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
32
- on: T.any(Symbol, String),
32
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
33
33
  prepend: T::Boolean,
34
34
  unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
35
35
  ).void
@@ -74,6 +74,7 @@ module ActiveModel::Validations
74
74
  strict: T::Boolean,
75
75
  uniqueness: T.any(T::Boolean, T::Hash[T.untyped, T.untyped]),
76
76
  unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
77
+ kwargs: T.untyped
77
78
  ).void
78
79
  end
79
80
  def validates(
@@ -94,91 +95,41 @@ module ActiveModel::Validations
94
95
  size: false,
95
96
  strict: false,
96
97
  uniqueness: false,
97
- unless: :_
98
+ unless: :_,
99
+ **kwargs
98
100
  )
99
101
  end
100
102
  end
103
+
104
+ mixes_in_class_methods(ClassMethods)
101
105
  end
102
106
 
103
- class ActiveModel::Type::Boolean
107
+ class ActiveModel::Type::Value
108
+ extend T::Sig
109
+
110
+ sig { params(precision: T.untyped, limit: T.untyped, scale: T.untyped).void }
111
+ def initialize(precision: nil, limit: nil, scale: nil); end
112
+
113
+ sig { params(value: T.untyped).returns(T.untyped) }
114
+ def cast(value); end
115
+ end
116
+
117
+ class ActiveModel::Type::Boolean < ActiveModel::Type::Value
104
118
  sig { params(arg0: T.untyped).returns(T.nilable(T::Boolean))}
105
119
  def cast(arg0); end
106
120
  end
107
121
 
108
- module ActiveModel::Validations::HelperMethods
109
- sig do
110
- params(
111
- attr_names: T.any(String, Symbol),
112
- message: String,
113
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
114
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
115
- on: T.any(Symbol, String),
116
- allow_nil: T::Boolean,
117
- allow_blank: T::Boolean,
118
- strict: T::Boolean
119
- ).void
120
- end
121
- def validates_absence_of(
122
- *attr_names,
123
- message: 'must be blank',
124
- if: nil,
125
- unless: :_,
126
- on: :_,
127
- allow_nil: false,
128
- allow_blank: false,
129
- strict: false
130
- ); end
131
-
132
- sig do
133
- params(
134
- attr_names: T.any(String, Symbol),
135
- message: String,
136
- accept: T.untyped,
137
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
138
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
139
- on: T.any(Symbol, String),
140
- allow_nil: T::Boolean,
141
- allow_blank: T::Boolean,
142
- strict: T::Boolean
143
- ).void
144
- end
145
- def validates_acceptance_of(
146
- *attr_names,
147
- message: 'must be accepted',
148
- accept: ['1', true],
149
- if: nil,
150
- unless: :_,
151
- on: :_,
152
- allow_nil: false,
153
- allow_blank: false,
154
- strict: false
155
- ); end
122
+ class ActiveModel::Type::ImmutableString < ActiveModel::Type::Value
123
+ sig { params(arg0: T.untyped).returns(T.nilable(String))}
124
+ def cast(arg0); end
125
+ end
156
126
 
157
- sig do
158
- params(
159
- attr_names: T.any(String, Symbol),
160
- message: String,
161
- case_sensitive: T::Boolean,
162
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
163
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
164
- on: T.any(Symbol, String),
165
- allow_nil: T::Boolean,
166
- allow_blank: T::Boolean,
167
- strict: T::Boolean
168
- ).void
169
- end
170
- def validates_confirmation_of(
171
- *attr_names,
172
- message: "doesn't match %{translated_attribute_name}",
173
- case_sensitive: true,
174
- if: nil,
175
- unless: :_,
176
- on: :_,
177
- allow_nil: false,
178
- allow_blank: false,
179
- strict: false
180
- ); end
127
+ class ActiveModel::Type::String < ActiveModel::Type::ImmutableString
128
+ sig { params(arg0: T.untyped).returns(T.nilable(String))}
129
+ def cast(arg0); end
130
+ end
181
131
 
132
+ module ActiveModel::Validations::HelperMethods
182
133
  # A type alias for the in/within parameters on the
183
134
  # validates_(inclusion/exclusion)_of methods.
184
135
  InWithinType = T.type_alias do
@@ -188,235 +139,314 @@ module ActiveModel::Validations::HelperMethods
188
139
  String,
189
140
  T::Array[T.any(String, Symbol)],
190
141
  T::Range[Integer],
142
+ T::Array[T::Boolean],
191
143
  T.proc.params(arg0: T.untyped).returns(T::Boolean)
192
144
  )
193
145
  )
194
146
  end
195
- sig do
196
- params(
197
- attr_names: T.any(String, Symbol),
198
- message: String,
199
- in: InWithinType,
200
- within: InWithinType,
201
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
202
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
203
- on: T.any(Symbol, String),
204
- allow_nil: T::Boolean,
205
- allow_blank: T::Boolean,
206
- strict: T::Boolean
207
- ).void
208
- end
209
- def validates_exclusion_of(
210
- *attr_names,
211
- message: 'is reserved',
212
- in: nil,
213
- within: nil,
214
- if: nil,
215
- unless: :_,
216
- on: :_,
217
- allow_nil: false,
218
- allow_blank: false,
219
- strict: false
220
- ); end
221
147
 
222
- sig do
223
- params(
224
- attr_names: T.any(String, Symbol),
225
- message: String,
226
- with: T.untyped,
227
- without: T.untyped,
228
- multiline: T.untyped,
229
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
230
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
231
- on: T.any(Symbol, String),
232
- allow_nil: T::Boolean,
233
- allow_blank: T::Boolean,
234
- strict: T::Boolean
235
- ).void
236
- end
237
- def validates_format_of(
238
- *attr_names,
239
- message: 'is invalid',
240
- with: nil,
241
- without: nil,
242
- multiline: nil,
243
- if: nil,
244
- unless: :_,
245
- on: :_,
246
- allow_nil: false,
247
- allow_blank: false,
248
- strict: false
249
- ); end
148
+ module ClassMethods
149
+ sig do
150
+ params(
151
+ attr_names: T.any(String, Symbol),
152
+ message: String,
153
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
154
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
155
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
156
+ allow_nil: T::Boolean,
157
+ allow_blank: T::Boolean,
158
+ strict: T::Boolean
159
+ ).void
160
+ end
161
+ def validates_absence_of(
162
+ *attr_names,
163
+ message: 'must be blank',
164
+ if: nil,
165
+ unless: :_,
166
+ on: :_,
167
+ allow_nil: false,
168
+ allow_blank: false,
169
+ strict: false
170
+ ); end
250
171
 
251
- sig do
252
- params(
253
- attr_names: T.any(String, Symbol),
254
- message: String,
255
- in: InWithinType,
256
- within: InWithinType,
257
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
258
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
259
- on: T.any(Symbol, String),
260
- allow_nil: T::Boolean,
261
- allow_blank: T::Boolean,
262
- strict: T::Boolean
263
- ).void
264
- end
265
- def validates_inclusion_of(
266
- *attr_names,
267
- message: 'is not included in the list',
268
- in: nil,
269
- within: nil,
270
- if: nil,
271
- unless: :_,
272
- on: :_,
273
- allow_nil: false,
274
- allow_blank: false,
275
- strict: false
276
- ); end
172
+ sig do
173
+ params(
174
+ attr_names: T.any(String, Symbol),
175
+ message: String,
176
+ accept: T.untyped,
177
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
178
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
179
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
180
+ allow_nil: T::Boolean,
181
+ allow_blank: T::Boolean,
182
+ strict: T::Boolean
183
+ ).void
184
+ end
185
+ def validates_acceptance_of(
186
+ *attr_names,
187
+ message: 'must be accepted',
188
+ accept: ['1', true],
189
+ if: nil,
190
+ unless: :_,
191
+ on: :_,
192
+ allow_nil: false,
193
+ allow_blank: false,
194
+ strict: false
195
+ ); end
277
196
 
278
- sig do
279
- params(
280
- attr_names: T.any(String, Symbol),
281
- message: T.nilable(String),
282
- minimum: T.nilable(Integer),
283
- maximum: T.nilable(Integer),
284
- is: T.nilable(Integer),
285
- within: T.nilable(T::Range[Integer]),
286
- in: T.nilable(T::Range[Integer]),
287
- too_long: String,
288
- too_short: String,
289
- wrong_length: String,
290
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
291
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
292
- on: T.any(Symbol, String),
293
- allow_nil: T::Boolean,
294
- allow_blank: T::Boolean,
295
- strict: T::Boolean
296
- ).void
297
- end
298
- def validates_length_of(
299
- *attr_names,
300
- message: nil,
301
- minimum: nil,
302
- maximum: nil,
303
- is: nil,
304
- within: nil,
305
- in: nil,
306
- too_long: 'is too long (maximum is %{count} characters)',
307
- too_short: 'is too short (minimum is %{count} characters)',
308
- wrong_length: 'is the wrong length (should be %{count} characters)',
309
- if: nil,
310
- unless: :_,
311
- on: :_,
312
- allow_nil: false,
313
- allow_blank: false,
314
- strict: false
315
- ); end
197
+ sig do
198
+ params(
199
+ attr_names: T.any(String, Symbol),
200
+ message: String,
201
+ case_sensitive: T::Boolean,
202
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
203
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
204
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
205
+ allow_nil: T::Boolean,
206
+ allow_blank: T::Boolean,
207
+ strict: T::Boolean
208
+ ).void
209
+ end
210
+ def validates_confirmation_of(
211
+ *attr_names,
212
+ message: "doesn't match %{translated_attribute_name}",
213
+ case_sensitive: true,
214
+ if: nil,
215
+ unless: :_,
216
+ on: :_,
217
+ allow_nil: false,
218
+ allow_blank: false,
219
+ strict: false
220
+ ); end
316
221
 
317
- # validates_size_of is an alias of validates_length_of
318
- sig do
319
- params(
320
- attr_names: T.any(String, Symbol),
321
- message: T.nilable(String),
322
- minimum: T.nilable(Integer),
323
- maximum: T.nilable(Integer),
324
- is: T.nilable(Integer),
325
- within: T.nilable(T::Range[Integer]),
326
- in: T.nilable(T::Range[Integer]),
327
- too_long: String,
328
- too_short: String,
329
- wrong_length: String,
330
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
331
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
332
- on: T.any(Symbol, String),
333
- allow_nil: T::Boolean,
334
- allow_blank: T::Boolean,
335
- strict: T::Boolean
336
- ).void
337
- end
338
- def validates_size_of(
339
- *attr_names,
340
- message: nil,
341
- minimum: nil,
342
- maximum: nil,
343
- is: nil,
344
- within: nil,
345
- in: nil,
346
- too_long: 'is too long (maximum is %{count} characters)',
347
- too_short: 'is too short (minimum is %{count} characters)',
348
- wrong_length: 'is the wrong length (should be %{count} characters)',
349
- if: nil,
350
- unless: :_,
351
- on: :_,
352
- allow_nil: false,
353
- allow_blank: false,
354
- strict: false
355
- ); end
222
+ sig do
223
+ params(
224
+ attr_names: T.any(String, Symbol),
225
+ message: String,
226
+ in: InWithinType,
227
+ within: InWithinType,
228
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
229
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
230
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
231
+ allow_nil: T::Boolean,
232
+ allow_blank: T::Boolean,
233
+ strict: T::Boolean
234
+ ).void
235
+ end
236
+ def validates_exclusion_of(
237
+ *attr_names,
238
+ message: 'is reserved',
239
+ in: nil,
240
+ within: nil,
241
+ if: nil,
242
+ unless: :_,
243
+ on: :_,
244
+ allow_nil: false,
245
+ allow_blank: false,
246
+ strict: false
247
+ ); end
356
248
 
357
- # Create a type alias so we don't have to repeat this long type signature 6 times.
358
- NumberComparatorType = T.type_alias {T.nilable(T.any(Integer, Float, T.proc.params(arg0: T.untyped).returns(T::Boolean), Symbol))}
359
- sig do
360
- params(
361
- attr_names: T.any(String, Symbol),
362
- message: String,
363
- only_integer: T::Boolean,
364
- greater_than: NumberComparatorType,
365
- greater_than_or_equal_to: NumberComparatorType,
366
- equal_to: NumberComparatorType,
367
- less_than: NumberComparatorType,
368
- less_than_or_equal_to: NumberComparatorType,
369
- other_than: NumberComparatorType,
370
- odd: T::Boolean,
371
- even: T::Boolean,
372
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
373
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
374
- on: T.any(Symbol, String),
375
- allow_nil: T::Boolean,
376
- allow_blank: T::Boolean,
377
- strict: T::Boolean
378
- ).void
379
- end
380
- def validates_numericality_of(
381
- *attr_names,
382
- message: 'is not a number',
383
- only_integer: false,
384
- greater_than: nil,
385
- greater_than_or_equal_to: nil,
386
- equal_to: nil,
387
- less_than: nil,
388
- less_than_or_equal_to: nil,
389
- other_than: nil,
390
- odd: false,
391
- even: false,
392
- if: nil,
393
- unless: :_,
394
- on: :_,
395
- allow_nil: false,
396
- allow_blank: false,
397
- strict: false
398
- ); end
249
+ sig do
250
+ params(
251
+ attr_names: T.any(String, Symbol),
252
+ message: String,
253
+ with: T.untyped,
254
+ without: T.untyped,
255
+ multiline: T.untyped,
256
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
257
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
258
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
259
+ allow_nil: T::Boolean,
260
+ allow_blank: T::Boolean,
261
+ strict: T::Boolean
262
+ ).void
263
+ end
264
+ def validates_format_of(
265
+ *attr_names,
266
+ message: 'is invalid',
267
+ with: nil,
268
+ without: nil,
269
+ multiline: nil,
270
+ if: nil,
271
+ unless: :_,
272
+ on: :_,
273
+ allow_nil: false,
274
+ allow_blank: false,
275
+ strict: false
276
+ ); end
277
+
278
+ sig do
279
+ params(
280
+ attr_names: T.any(String, Symbol),
281
+ message: String,
282
+ in: InWithinType,
283
+ within: InWithinType,
284
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
285
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
286
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
287
+ allow_nil: T::Boolean,
288
+ allow_blank: T::Boolean,
289
+ strict: T::Boolean
290
+ ).void
291
+ end
292
+ def validates_inclusion_of(
293
+ *attr_names,
294
+ message: 'is not included in the list',
295
+ in: nil,
296
+ within: nil,
297
+ if: nil,
298
+ unless: :_,
299
+ on: :_,
300
+ allow_nil: false,
301
+ allow_blank: false,
302
+ strict: false
303
+ ); end
304
+
305
+ sig do
306
+ params(
307
+ attr_names: T.any(String, Symbol),
308
+ message: T.nilable(String),
309
+ minimum: T.nilable(Integer),
310
+ maximum: T.nilable(Integer),
311
+ is: T.nilable(Integer),
312
+ within: T.nilable(T::Range[Integer]),
313
+ in: T.nilable(T::Range[Integer]),
314
+ too_long: String,
315
+ too_short: String,
316
+ wrong_length: String,
317
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
318
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
319
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
320
+ allow_nil: T::Boolean,
321
+ allow_blank: T::Boolean,
322
+ strict: T::Boolean
323
+ ).void
324
+ end
325
+ def validates_length_of(
326
+ *attr_names,
327
+ message: nil,
328
+ minimum: nil,
329
+ maximum: nil,
330
+ is: nil,
331
+ within: nil,
332
+ in: nil,
333
+ too_long: 'is too long (maximum is %{count} characters)',
334
+ too_short: 'is too short (minimum is %{count} characters)',
335
+ wrong_length: 'is the wrong length (should be %{count} characters)',
336
+ if: nil,
337
+ unless: :_,
338
+ on: :_,
339
+ allow_nil: false,
340
+ allow_blank: false,
341
+ strict: false
342
+ ); end
343
+
344
+ # validates_size_of is an alias of validates_length_of
345
+ sig do
346
+ params(
347
+ attr_names: T.any(String, Symbol),
348
+ message: T.nilable(String),
349
+ minimum: T.nilable(Integer),
350
+ maximum: T.nilable(Integer),
351
+ is: T.nilable(Integer),
352
+ within: T.nilable(T::Range[Integer]),
353
+ in: T.nilable(T::Range[Integer]),
354
+ too_long: String,
355
+ too_short: String,
356
+ wrong_length: String,
357
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
358
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
359
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
360
+ allow_nil: T::Boolean,
361
+ allow_blank: T::Boolean,
362
+ strict: T::Boolean
363
+ ).void
364
+ end
365
+ def validates_size_of(
366
+ *attr_names,
367
+ message: nil,
368
+ minimum: nil,
369
+ maximum: nil,
370
+ is: nil,
371
+ within: nil,
372
+ in: nil,
373
+ too_long: 'is too long (maximum is %{count} characters)',
374
+ too_short: 'is too short (minimum is %{count} characters)',
375
+ wrong_length: 'is the wrong length (should be %{count} characters)',
376
+ if: nil,
377
+ unless: :_,
378
+ on: :_,
379
+ allow_nil: false,
380
+ allow_blank: false,
381
+ strict: false
382
+ ); end
383
+
384
+ # Create a type alias so we don't have to repeat this long type signature 6 times.
385
+ NumberComparatorType = T.type_alias {T.nilable(T.any(Integer, Float, T.proc.params(arg0: T.untyped).returns(T::Boolean), Symbol))}
386
+ sig do
387
+ params(
388
+ attr_names: T.any(String, Symbol),
389
+ message: String,
390
+ only_integer: T::Boolean,
391
+ greater_than: NumberComparatorType,
392
+ greater_than_or_equal_to: NumberComparatorType,
393
+ equal_to: NumberComparatorType,
394
+ less_than: NumberComparatorType,
395
+ less_than_or_equal_to: NumberComparatorType,
396
+ other_than: NumberComparatorType,
397
+ odd: T::Boolean,
398
+ even: T::Boolean,
399
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
400
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
401
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
402
+ allow_nil: T::Boolean,
403
+ allow_blank: T::Boolean,
404
+ strict: T::Boolean
405
+ ).void
406
+ end
407
+ def validates_numericality_of(
408
+ *attr_names,
409
+ message: 'is not a number',
410
+ only_integer: false,
411
+ greater_than: nil,
412
+ greater_than_or_equal_to: nil,
413
+ equal_to: nil,
414
+ less_than: nil,
415
+ less_than_or_equal_to: nil,
416
+ other_than: nil,
417
+ odd: false,
418
+ even: false,
419
+ if: nil,
420
+ unless: :_,
421
+ on: :_,
422
+ allow_nil: false,
423
+ allow_blank: false,
424
+ strict: false
425
+ ); end
399
426
 
400
- sig do
401
- params(
402
- attr_names: T.any(String, Symbol),
403
- message: String,
404
- if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
405
- unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
406
- on: T.any(Symbol, String),
407
- allow_nil: T::Boolean,
408
- allow_blank: T::Boolean,
409
- strict: T::Boolean
410
- ).void
427
+ sig do
428
+ params(
429
+ attr_names: T.any(String, Symbol),
430
+ message: String,
431
+ if: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
432
+ unless: T.any(Symbol, String, T.proc.params(arg0: T.untyped).returns(T::Boolean)),
433
+ on: T.any(Symbol, String, T::Array[T.any(Symbol, String)]),
434
+ allow_nil: T::Boolean,
435
+ allow_blank: T::Boolean,
436
+ strict: T::Boolean
437
+ ).void
438
+ end
439
+ def validates_presence_of(
440
+ *attr_names,
441
+ message: "can't be blank",
442
+ if: nil,
443
+ unless: :_,
444
+ on: :_,
445
+ allow_nil: false,
446
+ allow_blank: false,
447
+ strict: false
448
+ ); end
411
449
  end
412
- def validates_presence_of(
413
- *attr_names,
414
- message: "can't be blank",
415
- if: nil,
416
- unless: :_,
417
- on: :_,
418
- allow_nil: false,
419
- allow_blank: false,
420
- strict: false
421
- ); end
450
+
451
+ mixes_in_class_methods(ClassMethods)
422
452
  end