smart_initializer 0.9.0 → 0.9.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: 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