easy_params 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a23a79fb06b0d9c02b836dc314e420f1339b20473d740f4427a6f1a9e740efe
4
- data.tar.gz: e1ddbee8e7b5aa08fb3e9f1f2dc925ecc179a8f95ac3276e2aeb839f7e3cbe9d
3
+ metadata.gz: 6c3709594b8141aa9bc0d851a2f1eabcf40b7528637ad3d055c76e3ad7db1ac8
4
+ data.tar.gz: da9839e5b6f8242fe05ad074868fb23a3181840b723333b7fa66f9717efca4d7
5
5
  SHA512:
6
- metadata.gz: 9a9968cc2201493bd774562cc9590d47537b870238ac5b64b33167c9b084feb14c067b6b4ee9a36f54abdff18a198c8d99474b8dc531fab45ebbffd61ae08c11
7
- data.tar.gz: 11d7e883cc4a229c14b9323e94f8372e2f38d2c238e883884c2fe733bab4918be6ad62c13da09621fbb0e8b5b85405d7d2d9cb8197abc3cbf0d762b6657c2a7d
6
+ metadata.gz: 784db4e629c9800db787546346c9dd555ec277f578ecebfa9d59d5d76bb0532612d04a9e711b0f76a5040c9257673bf9e2c97ca85cb47bb1addeb67b7549310d
7
+ data.tar.gz: 20ced440392006961a46feab7eea99b2a71dc752dbf4f04559041f5fb9f7aa861524faec9d50cab56b3c13ca29dff7ec9dd192012289ed84061485a7ad1f094a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- easy_params (0.4.0)
4
+ easy_params (0.4.1)
5
5
  activemodel (>= 3.2, < 8)
6
6
  dry-struct (~> 1.4)
7
7
  dry-types (~> 1.5)
@@ -56,7 +56,7 @@ GEM
56
56
  ice_nine (0.11.2)
57
57
  json (2.6.3)
58
58
  method_source (1.0.0)
59
- minitest (5.20.0)
59
+ minitest (5.21.1)
60
60
  mutex_m (0.2.0)
61
61
  parallel (1.23.0)
62
62
  parser (3.2.2.3)
@@ -17,45 +17,42 @@ module EasyParams
17
17
 
18
18
  # %w[Integer Decimal Float Bool String Date DateTime Time Array Struct StructDSL].each do |type|
19
19
  %w[Integer Decimal Float Bool String Date DateTime Time].each do |type_name|
20
- send(:define_singleton_method, type_name.underscore) do |param_name, default: nil, normalize: nil, **validations|
20
+ send(:define_singleton_method,
21
+ type_name.underscore) do |param_name, default: nil, normalize: nil, optional: nil, **validations|
21
22
  type = EasyParams::Types.const_get(type_name)
22
23
  type = type.default(default) if default
24
+ type = type.meta(omittable: true) if optional
23
25
  type = type.constructor { |value| value == Dry::Types::Undefined ? value : normalize.call(value) } if normalize
24
26
  validates param_name, **validations if validations.any?
25
27
  public_send(:attribute, param_name, type)
26
28
  end
27
29
  end
28
30
 
29
- def self.each(param_name, normalize: nil, **validations, &block)
31
+ def self.each(param_name, normalize: nil, optional: nil, **validations, &block)
30
32
  validates param_name, **validations if validations.any?
31
- type = EasyParams::Types::Each
33
+ type = EasyParams::Types::Array.of(EasyParams::Types::Struct)
34
+ type = type.meta(omittable: true) if optional
32
35
  type = type.constructor { |value| value == Dry::Types::Undefined ? value : normalize.call(value) } if normalize
33
36
  public_send(:attribute, param_name, type, &block)
34
37
  end
35
38
 
36
- def self.has(param_name, normalize: nil, **validations, &block)
39
+ def self.has(param_name, normalize: nil, optional: nil, **validations, &block)
37
40
  validates param_name, **validations if validations.any?
38
41
  type = EasyParams::Types::Struct
42
+ type = type.meta(omittable: true) if optional
39
43
  type = type.constructor { |value| value == Dry::Types::Undefined ? value : normalize.call(value) } if normalize
40
44
  public_send(:attribute, param_name, type, &block)
41
45
  end
42
46
 
43
- def self.array(param_name, of:, normalize: nil, **validations, &block)
47
+ def self.array(param_name, of:, normalize: nil, optional: nil, **validations, &block)
44
48
  validates param_name, **validations if validations.any?
45
49
  of_type = EasyParams::Types.const_get(of.to_s.camelcase)
46
50
  type = EasyParams::Types::Array
51
+ type = type.meta(omittable: true) if optional
47
52
  type = type.constructor { |value| value == Dry::Types::Undefined ? value : normalize.call(value) } if normalize
48
53
  public_send(:attribute, param_name, type.of(of_type), &block)
49
54
  end
50
55
 
51
- def self.param(method_name, type_name, of: nil, default: nil, **validations, &block)
52
- type = EasyParams::Types.const_get(type_name.to_s.camelcase)
53
- type = type.default(default) if default
54
- type = type.of(EasyParams::Types.const_get(of.to_s.camelcase)) if of && type_name != :each
55
- validates method_name, **validations if validations.any?
56
- public_send(:attribute, method_name, type, &block)
57
- end
58
-
59
56
  private
60
57
 
61
58
  def validate_nested
@@ -2,20 +2,18 @@
2
2
 
3
3
  module EasyParams
4
4
  module Types
5
- Struct = EasyParams::Base.meta(omittable: true)
6
- Has = EasyParams::Base.meta(omittable: true)
7
- Integer = Dry::Types['params.integer'].optional.meta(omittable: true).default(nil)
8
- Decimal = Dry::Types['params.decimal'].optional.meta(omittable: true).default(nil)
9
- Float = Dry::Types['params.float'].optional.meta(omittable: true).default(nil)
10
- Bool = Dry::Types['params.bool'].optional.meta(omittable: true).default(nil)
11
- String = Dry::Types['string'].optional.meta(omittable: true).default(nil)
12
- Array = Dry::Types['array'].meta(omittable: true).default([])
13
- Each = Dry::Types['array'].of(Struct).meta(omittable: true).default([])
14
- Date = Dry::Types['params.date'].optional.meta(omittable: true).default(nil)
15
- DateTime = Dry::Types['params.date_time'].optional.meta(omittable: true).default(nil)
16
- Time = Dry::Types['params.time'].optional.meta(omittable: true).default(nil)
5
+ Struct = EasyParams::Base
6
+ Integer = Dry::Types['params.integer'].optional.default(nil)
7
+ Decimal = Dry::Types['params.decimal'].optional.default(nil)
8
+ Float = Dry::Types['params.float'].optional.default(nil)
9
+ Bool = Dry::Types['params.bool'].optional.default(nil)
10
+ String = Dry::Types['coercible.string'].optional.default(nil)
11
+ Array = Dry::Types['array'].default([].freeze)
12
+ Date = Dry::Types['params.date'].optional.default(nil)
13
+ DateTime = Dry::Types['params.date_time'].optional.default(nil)
14
+ Time = Dry::Types['params.time'].optional.default(nil)
17
15
 
18
- STRUCT_TYPES_LIST = [Struct, Has].freeze
19
- ARRAY_OF_STRUCTS_TYPES_LIST = [Array.of(Struct), Each].freeze
16
+ STRUCT_TYPES_LIST = [Struct].freeze
17
+ ARRAY_OF_STRUCTS_TYPES_LIST = [Array.of(Struct)].freeze
20
18
  end
21
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EasyParams
4
- VERSION = '0.4.0'
4
+ VERSION = '0.4.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrii Baran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-08 00:00:00.000000000 Z
11
+ date: 2024-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel