easy_params 0.4.0 → 0.4.1

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.
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