servactory 2.13.1 → 2.13.3

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: b763a59ba9addc399da0f21f95c1b48587a49754f2f67ec4c3cff52e3808840d
4
- data.tar.gz: 7411b3254bbf61e2754c58432540260077c62f58912d881c716d1fb33d3757f2
3
+ metadata.gz: 686b37992728c9a55817ad99143cb5920e3534229c61f6d4064815b5f5a29195
4
+ data.tar.gz: e03438b07981f0c9a9f553c147b52fec9bc51aa78351c8df01ba2e884c758daf
5
5
  SHA512:
6
- metadata.gz: df8c6ee28efbe777a6a98bdc4bc1641fdc787a16105f9444418ddad6371e7b913ac3a0dc799c1eefb15d99c97e7b06637db4bb77f5432f3629f5a933524229bf
7
- data.tar.gz: 58e1676c904cff6ac988fdd2616cb9c44768bde908a6364cc7d86fcbdbac417e4fefb664da6a47e6cdb9bd251c5fa0210b22111e3ae4179fb4810097c2bfc5f5
6
+ metadata.gz: 7f9c8d95aacf741f565cedd5a56e543b50fbf45427f68a94bf9229e58a5fa029acc0b0fb4ce6391fb3a84e44a248d2c590c4c0c62e080ef8d47f1c8bb51aa851
7
+ data.tar.gz: bd2234547c977824d2ae7cf9440e60b575441d31558bc3ac5c0dfea46a4be18957cd68b2ffd83615bcc64909a15be284d798a50e39d97e2821fabccab0bc3586
@@ -47,10 +47,7 @@ module Servactory
47
47
 
48
48
  input_value = @context.send(:servactory_service_warehouse).fetch_input(input.name)
49
49
 
50
- if input.optional? && (
51
- (!input_value.is_a?(TrueClass) && !input_value.is_a?(FalseClass) && input_value.blank?) ||
52
- input_value.nil?
53
- ) # do
50
+ if input.optional? && !input.default.nil? && !Servactory::Utils.value_present?(input_value)
54
51
  input_value = input.default
55
52
  end
56
53
 
@@ -10,14 +10,14 @@ module Servactory
10
10
  end
11
11
 
12
12
  def condition_for_input_with(input:, value:, option:)
13
- if input.required? || (
14
- input.optional? && !input.default.nil?
15
- ) || (
16
- input.optional? && !value.nil?
17
- ) # do
13
+ if input.required? || (input.optional? && !value.nil?) # rubocop:disable Style/IfUnlessModifier
18
14
  return option.value.include?(value)
19
15
  end
20
16
 
17
+ if input.optional? && value.nil? && !input.default.nil? # rubocop:disable Style/IfUnlessModifier
18
+ return option.value.include?(input.default)
19
+ end
20
+
21
21
  true
22
22
  end
23
23
 
@@ -127,18 +127,28 @@ module Servactory
127
127
 
128
128
  ########################################################################
129
129
 
130
- def prepare_object_with!(object:, schema:) # rubocop:disable Metrics/MethodLength
130
+ def prepare_object_with!(object:, schema:) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
131
131
  schema.map do |schema_key, schema_value|
132
132
  attribute_type = schema_value.fetch(:type, String)
133
+ required = schema_value.fetch(:required, true)
134
+ object_value = object[schema_key]
133
135
 
134
136
  if attribute_type == Hash
137
+ default_value = schema_value.fetch(:default, {})
138
+
139
+ if !required && !default_value.nil? && !Servactory::Utils.value_present?(object_value)
140
+ object[schema_key] = default_value
141
+ end
142
+
135
143
  prepare_object_with!(
136
144
  object: object.fetch(schema_key, {}),
137
145
  schema: schema_value.except(*RESERVED_OPTIONS)
138
146
  )
139
147
  else
140
- unless (default = schema_value.fetch(:default, nil)).nil?
141
- object[schema_key] = default
148
+ default_value = schema_value.fetch(:default, nil)
149
+
150
+ if !required && !default_value.nil? && !Servactory::Utils.value_present?(object_value)
151
+ object[schema_key] = default_value
142
152
  end
143
153
 
144
154
  unless (input_prepare = schema_value.fetch(:prepare, nil)).nil?
@@ -4,7 +4,7 @@ module Servactory
4
4
  module VERSION
5
5
  MAJOR = 2
6
6
  MINOR = 13
7
- PATCH = 1
7
+ PATCH = 3
8
8
  PRE = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join(".")
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servactory
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.1
4
+ version: 2.13.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sokolov
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-19 00:00:00.000000000 Z
10
+ date: 2025-04-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport
@@ -103,14 +103,14 @@ dependencies:
103
103
  name: appraisal
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - "~>"
106
+ - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: '2.5'
109
109
  type: :development
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
115
  version: '2.5'
116
116
  - !ruby/object:Gem::Dependency
@@ -189,14 +189,14 @@ dependencies:
189
189
  requirements:
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
- version: '0.7'
192
+ version: '0.9'
193
193
  type: :development
194
194
  prerelease: false
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: '0.7'
199
+ version: '0.9'
200
200
  - !ruby/object:Gem::Dependency
201
201
  name: steep
202
202
  requirement: !ruby/object:Gem::Requirement
@@ -347,7 +347,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
347
  requirements:
348
348
  - - ">="
349
349
  - !ruby/object:Gem::Version
350
- version: 3.1.0
350
+ version: '3.1'
351
351
  required_rubygems_version: !ruby/object:Gem::Requirement
352
352
  requirements:
353
353
  - - ">="