smart_initializer 0.9.0 → 0.9.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: 9ef704918e8e3d81bfb2dd551b96f4e68f2a0f2cefacfdbced95ae9cce1a6b0b
4
- data.tar.gz: 3960c509958efb9a0886d959ff3a55b6965bb916f80bd32bf04e0977d58b7560
3
+ metadata.gz: '0298953ea16ae53d51961bc46a26eefcba667f4a7d07d9d09e7d59b33f68760e'
4
+ data.tar.gz: 1cdd0cde6871dcccc17641ad2870d71da26e4385f8e2df93affb96577d67f6b4
5
5
  SHA512:
6
- metadata.gz: 329ebcfc66cab98ab6e35b392c425df04eb5d03260b3bcefceb6c9cffa8863bad1fafce5d3b822c4fd0d39e0caab36a502b38a8ed15ecba1f0157908a6bbbc0d
7
- data.tar.gz: 31f8259c26367c56961dc70cd086dcae7e96f3eafa206b3395b2f4afc0cb25afc3bba6d55a94251d1495bb13fd27c3c590ca67ace17bba1af226b48ceacfb7a9
6
+ metadata.gz: 4c3cf5f55e9d79003a48d655eac65470029d2b7b2565e19dee0114168585c32a4b101405635492d5431e8e8041b2d09f7a805574ea356561d12470d321878a9a
7
+ data.tar.gz: 558a0037b339802ee10a9a4a60b2841cc8f6256bfa3d8576e65351d531c393cbd9542e988a5c49ecb7d30e3cae27a7b57b6f1dbb643cd56771fa3cdbb6e17315
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [0.9.1] - 2022-03-06
5
+
6
+ ### Fixed
7
+
8
+ - `finalize` now accepts lambdas with arity `-2`. For example `->(a, *b) {}` or `:freeze.to_proc`
9
+ which in `Ruby >= 3` returns lambda with arity equal to `-2`.
10
+
4
11
  ## [0.9.0] - 2021-12-19
5
12
  ### Changed
6
13
  - `:finalize` block is not invoked on the `option` with `optional: true` flag;
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smart_initializer (0.9.0)
4
+ smart_initializer (0.9.1)
5
5
  qonfig (~> 0.24)
6
6
  smart_engine (~> 0.11)
7
7
  smart_types (~> 0.4)
@@ -36,7 +36,7 @@ GEM
36
36
  pry (0.14.1)
37
37
  coderay (~> 1.1)
38
38
  method_source (~> 1.0)
39
- qonfig (0.26.0)
39
+ qonfig (0.27.0)
40
40
  rack (2.2.3)
41
41
  rainbow (3.0.0)
42
42
  rake (13.0.6)
@@ -96,6 +96,7 @@ PLATFORMS
96
96
  x86_64-darwin-19
97
97
  x86_64-darwin-20
98
98
  x86_64-darwin-21
99
+ x86_64-linux
99
100
 
100
101
  DEPENDENCIES
101
102
  armitage-rubocop (~> 1.23)
data/README.md CHANGED
@@ -71,6 +71,9 @@ in order to guarantee the validity of the SmartCore::Initializer's functionality
71
71
  2. *(if defined)*: `default value` (default value is used when `original value` is not defined)
72
72
  3. *(if defined)*: `finalize`;
73
73
 
74
+ - if `default`-object is a proc-object - this proc-object will be invoked in the `outer scope` of block definition;
75
+ - if `finalize`-object is a proc-object - this proc-object will be invoked in the `isntance` context (class instance);
76
+
74
77
  **NOTE**: `:finalize` block are not invoked on omitted `optional: true` attributes
75
78
  which has no `:default` definition bock and which are not passed to the constructor. Example:
76
79
 
@@ -96,6 +99,8 @@ end
96
99
  User.new.age # => '0_years'
97
100
  ```
98
101
 
102
+ ---
103
+
99
104
  ### Constructor definition DSL
100
105
 
101
106
  **NOTE**: last `Hash` argument will be treated as `kwarg`s;
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- smart_initializer (0.8.0)
4
+ smart_initializer (0.9.1)
5
5
  qonfig (~> 0.24)
6
6
  smart_engine (~> 0.11)
7
7
  smart_types (~> 0.4)
@@ -36,7 +36,7 @@ GEM
36
36
  pry (0.14.1)
37
37
  coderay (~> 1.1)
38
38
  method_source (~> 1.0)
39
- qonfig (0.26.0)
39
+ qonfig (0.27.0)
40
40
  rack (2.2.3)
41
41
  rainbow (3.0.0)
42
42
  rake (13.0.3)
@@ -84,7 +84,7 @@ GEM
84
84
  simplecov_json_formatter (~> 0.1)
85
85
  simplecov-html (0.12.3)
86
86
  simplecov_json_formatter (0.1.2)
87
- smart_engine (0.11.0)
87
+ smart_engine (0.12.0)
88
88
  smart_types (0.7.0)
89
89
  smart_engine (~> 0.11)
90
90
  thy (0.1.4)
@@ -96,6 +96,7 @@ GEM
96
96
  PLATFORMS
97
97
  x86_64-darwin-20
98
98
  x86_64-darwin-21
99
+ x86_64-linux
99
100
 
100
101
  DEPENDENCIES
101
102
  armitage-rubocop (~> 1.23)
@@ -108,4 +109,4 @@ DEPENDENCIES
108
109
  thy (~> 0.1.4)
109
110
 
110
111
  BUNDLED WITH
111
- 2.2.31
112
+ 2.2.32
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- smart_initializer (0.8.0)
4
+ smart_initializer (0.9.1)
5
5
  qonfig (~> 0.24)
6
6
  smart_engine (~> 0.11)
7
7
  smart_types (~> 0.4)
@@ -35,7 +35,7 @@ GEM
35
35
  pry (0.14.1)
36
36
  coderay (~> 1.1)
37
37
  method_source (~> 1.0)
38
- qonfig (0.26.0)
38
+ qonfig (0.27.0)
39
39
  rack (2.2.3)
40
40
  rainbow (3.0.0)
41
41
  rake (13.0.3)
@@ -93,6 +93,7 @@ GEM
93
93
  PLATFORMS
94
94
  x86_64-darwin-20
95
95
  x86_64-darwin-21
96
+ x86_64-linux
96
97
 
97
98
  DEPENDENCIES
98
99
  armitage-rubocop (~> 1.23)
@@ -81,6 +81,7 @@ class SmartCore::Initializer::Attribute::Factory::Base
81
81
  #
82
82
  # @api private
83
83
  # @since 0.8.0
84
+ # @version 0.9.1
84
85
  def prepare_finalize_param(finalize)
85
86
  unless finalize.is_a?(::String) || finalize.is_a?(::Symbol) || finalize.is_a?(::Proc)
86
87
  raise(SmartCore::Initializer::ArgumentError, <<~ERROR_MESSAGE)
@@ -90,11 +91,12 @@ class SmartCore::Initializer::Attribute::Factory::Base
90
91
 
91
92
  # rubocop:disable Style/SoleNestedConditional
92
93
  if finalize.is_a?(::Proc) && finalize.lambda?
93
- unless (finalize.arity == 1 || finalize.arity == -1)
94
+ unless allowed_lambda_arity.bsearch { |element| finalize.arity <=> element }
94
95
  raise(
95
96
  SmartCore::Initializer::ArgumentError,
96
- 'Lambda-based finalizer should have arity equal to 1 or equal to -1 ' \
97
- '(your lambda object should require one attribute)'
97
+ "Lambda-based finalizer should have arity " \
98
+ "equal to #{allowed_lambda_arity.join(', ')} " \
99
+ "(your lambda object should require one attribute)"
98
100
  ) # TODO: show the name of attribute in error message (if the name is a valid, of course)
99
101
  end
100
102
  end
@@ -103,6 +105,13 @@ class SmartCore::Initializer::Attribute::Factory::Base
103
105
  SmartCore::Initializer::Attribute::Finalizer.create(finalize)
104
106
  end
105
107
 
108
+ # return [Array<Integer>]
109
+ # @api private
110
+ # @since 0.9.1
111
+ def allowed_lambda_arity
112
+ @allowed_lambda_arity ||= [-2, -1, 1].freeze
113
+ end
114
+
106
115
  # @param mutable [Boolean]
107
116
  # @return [Boolean]
108
117
  #
@@ -6,7 +6,7 @@ module SmartCore
6
6
  #
7
7
  # @api public
8
8
  # @since 0.1.0
9
- # @version 0.9.0
10
- VERSION = '0.9.0'
9
+ # @version 0.9.1
10
+ VERSION = '0.9.1'
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-18 00:00:00.000000000 Z
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: smart_engine
@@ -246,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  requirements: []
249
- rubygems_version: 3.2.32
249
+ rubygems_version: 3.3.0.dev
250
250
  signing_key:
251
251
  specification_version: 4
252
252
  summary: Initializer DSL