strum-service 0.0.1 → 0.0.2

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: 23dfc7b648bc76174a823745ed28d035fa85de556dff129309c9f55e83066a81
4
- data.tar.gz: 6561b68e156b33c3d2d4d391e6a838586c8036dd32bce7bd77ba702fb54de56a
3
+ metadata.gz: '0710157868640a5904ef6996d2e13f1b91cdcca1025b6a0b95b9230853ba3609'
4
+ data.tar.gz: 5d8a21d6d8fb7751e780881cad8ba3f7a02556868b50a82e99455f41b98166c9
5
5
  SHA512:
6
- metadata.gz: 02e2d61a36385cf3e76fcccbaba442681505461c082fb7b4d6821afad7a69815badbef25f4bafd6aba45f47ccc98260b6caf82037b12e3d8194286bd0f741f47
7
- data.tar.gz: d1667dfc277014273ca400abd4b1834b83c75c91d4423862ec457aa8db269ea0b4525cef9f6bc71d66b843cd60e013f6d9fdd40022c563c2f741010052ca9bb1
6
+ metadata.gz: 8af13f2c86dbea7ba37f27a32e1076d1a14f0122682dc8e5e27f1f4ead683545a2acc03fc1b4a071c5942fdadf1b8f2967a6f8f246f75f55432fca051182396a
7
+ data.tar.gz: aae52d447451bdab8b023f529802af7eee7d95ee5eb6191a4e330782a4838ea0d79cdd3c04c54affad0136e0a2cc0fc8442eafc4416f6d57b221558bdab079e3
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,3 @@
1
+ include:
2
+ - project: 'strum-rb/ci-cd'
3
+ file: '/strum-rb/.gitlab-ci.yml'
data/.rubocop.yml CHANGED
@@ -12,18 +12,15 @@ Layout/IndentationConsistency:
12
12
  Enabled: true
13
13
  EnforcedStyle: indented_internal_methods
14
14
 
15
- # Two spaces, no tabs (for indentation).
16
- Layout/IndentationWidth:
17
- Enabled: true
18
-
19
15
  # Check quotes usage according to lint rule below.
20
16
  Style/StringLiterals:
21
17
  Enabled: true
22
18
  EnforcedStyle: double_quotes
23
19
 
24
- Metrics/LineLength:
25
- Max: 120
20
+ Layout/LineLength:
26
21
  IgnoredPatterns: ['\A#']
27
22
 
28
23
  Metrics/BlockLength:
29
- ExcludedMethods: ['describe', 'context']
24
+ IgnoredMethods:
25
+ - describe
26
+ - context
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- strum-service (0.0.1)
4
+ strum-service (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/strum/service.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  require "strum/service/version"
4
4
 
5
5
  module Strum
6
- module Service
6
+ # Strum service
7
+ module Service # rubocop:disable Metrics/ModuleLength
7
8
  class Failure < StandardError; end
8
9
 
9
10
  def self.included(base)
@@ -14,17 +15,17 @@ module Strum
14
15
 
15
16
  # Internal: Interactor class methods.
16
17
  module ClassMethods
17
- def call(_input, **args, &block)
18
- new(_input, args).execute(&block)
18
+ def call(main_input, **args, &block)
19
+ new(main_input, args).execute(&block)
19
20
  end
20
21
  end
21
22
 
22
23
  # Instance methods
23
- def initialize(_input, **args)
24
+ def initialize(main_input, **args)
24
25
  self.strum_errors = {}
25
26
  self.service_handlers = { on: {}, success: {}, failure: {} }
26
27
  self.outputs = {}
27
- self.inputs = args.merge(default: _input)
28
+ self.inputs = args.merge(default: main_input)
28
29
  self._inputs = inputs.dup.freeze
29
30
  end
30
31
 
@@ -105,16 +106,21 @@ module Strum
105
106
  end
106
107
  # rubocop: enable Style/OptionalArguments
107
108
 
109
+ # def add_error(field, value)
110
+ # if field.is_a?(Array)
111
+ # field.each do |key|
112
+ # value.is_a?(Array) ? value.each { |v| add_error(key, v) } : add_error(key, value)
113
+ # add_error(key, value.is_a?(Array) ? value.first : value)
114
+ # end
115
+ # else
116
+ # strum_errors[field] ||= []
117
+ # strum_errors[field] = strum_errors[field] + Array(value)
118
+ # end
119
+ # end
120
+
108
121
  def add_error(field, value)
109
- if field.is_a?(Array)
110
- field.each do |key|
111
- value.is_a?(Array) ? value.each { |v| add_error(key, v) } : add_error(key, value)
112
- add_error(key, value.is_a?(Array) ? value.first : value)
113
- end
114
- else
115
- strum_errors[field] ||= []
116
- strum_errors[field] = strum_errors[field] + Array(value)
117
- end
122
+ strum_errors[field] ||= []
123
+ strum_errors[field] = strum_errors[field] + Array(value)
118
124
  end
119
125
 
120
126
  def add_errors(errors)
@@ -146,16 +152,14 @@ module Strum
146
152
  end
147
153
 
148
154
  def sliced_list(*keys)
149
- if input.is_a?(Array)
150
- self.input = input.map do |item|
151
- if item.is_a?(Hash)
152
- item = item.slice(*keys)
153
- else
154
- add_error(:input_subitem, :must_be_hash)
155
- end
155
+ add_error(:input, :must_be_array) && retuen unless input.is_a?(Array)
156
+
157
+ self.input = input.map do |item|
158
+ if item.is_a?(Hash)
159
+ item.slice(*keys)
160
+ else
161
+ add_error(:input_subitem, :must_be_hash)
156
162
  end
157
- else
158
- add_error(:input, :must_be_array)
159
163
  end
160
164
  end
161
165
 
@@ -171,10 +175,20 @@ module Strum
171
175
  key
172
176
  end
173
177
 
178
+ def handler_key
179
+ ((outputs.keys << nil) & service_handlers[:success].keys).first
180
+ end
181
+
182
+ def handler
183
+ service_handlers[:success][handler_key]
184
+ end
185
+
174
186
  def valid_result
175
- handler_key = ((outputs.keys << nil) & service_handlers[:success].keys).first
176
- handler = service_handlers[:success][handler_key]
177
- handler.is_a?(Proc) ? handler.call(outputs[handler_key] || outputs[:default]) : outputs[handler_key] || outputs[:default]
187
+ if handler.is_a?(Proc)
188
+ handler.call(outputs[handler_key] || outputs[:default])
189
+ else
190
+ outputs[handler_key] || outputs[:default]
191
+ end
178
192
  end
179
193
 
180
194
  def invalid_result
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Strum
4
4
  module Service
5
- VERSION = "0.0.1"
5
+ VERSION = "0.0.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strum-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhiy Nazarov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
11
+ date: 2021-02-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Strum Service
14
14
  email:
@@ -18,6 +18,7 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - ".gitignore"
21
+ - ".gitlab-ci.yml"
21
22
  - ".rspec"
22
23
  - ".rubocop.yml"
23
24
  - ".travis.yml"