the_help 3.3.0 → 3.5.0

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: a75d7a8941930a8c0364a9ab46feb9d84ed033854f6f00f7c94b2edd7835a37a
4
- data.tar.gz: 7a1155356c2e5d7b41aa7abae90cbf75debd78cfb2213cd1a73bf8e68250dc3d
3
+ metadata.gz: 23549e882a292bcd3a220b22e6761eca139ac452d0a5f4f7a46b318ba2702570
4
+ data.tar.gz: ab250ee41c17c458c54e9817a9cebe1781c36ce4211f7ed0bf274f4e28f63ea1
5
5
  SHA512:
6
- metadata.gz: 8b41c62f81ccca29c73cbdce4973c1fc7cbb9fd51c55e6b387cd7015c0280e5db1d38fd34d6b288ecca318782e53144364c0486df73ea15cebf66269a2b1c2dd
7
- data.tar.gz: 339df6294d38b60184704eabdc219e8f5c960a3fd898d461aa4d7f885e0e13de0a2db1be9098a87510e9f2ce4e2c84f741f3d316ce5281c18c875bdf13fdcd46
6
+ metadata.gz: 469d1d7513a3dd6cf7b6b5d9a34eb0580b0cbe3c5205996b1ef7240f8312777b4d44c17852c87ff435231c6f0d6a493588fc0f8097a9fa4e414a80fc6ba239a9
7
+ data.tar.gz: 99b3277a01c99017f2ba8f787a23a56da16a564a6a2e00ae8488f1af0e72844f100b34348c2ee2e79682f73160c3b3e4fe73497ff82bd3760d533446df88cbd9
data/.travis.yml CHANGED
@@ -2,4 +2,5 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.4.1
5
- before_install: gem install bundler -v 1.16.0.pre.2
5
+ - 3.0.1
6
+ before_install: gem install bundler -v 2.2.15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # TheHelp Changelog #
2
2
 
3
+ ## 3.4.0 ##
4
+
5
+ * added `TheHelp::Service#delegate_to_service` method that can be used inside a service definition
6
+ in order to have the current service delegate to another service and use the other service's
7
+ result as its own.
8
+
3
9
  ## 3.3.0 ##
4
10
 
5
11
  * Calling `#stop!` with no arguments in a service definition will now check that a result was set
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- the_help (3.3.0)
4
+ the_help (3.5.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ast (2.4.1)
10
10
  byebug (11.1.3)
11
- diff-lcs (1.4.4)
11
+ diff-lcs (1.5.0)
12
12
  parallel (1.19.2)
13
13
  parser (2.7.2.0)
14
14
  ast (~> 2.4.1)
@@ -16,19 +16,19 @@ GEM
16
16
  rake (13.0.1)
17
17
  regexp_parser (1.8.2)
18
18
  rexml (3.2.4)
19
- rspec (3.9.0)
20
- rspec-core (~> 3.9.0)
21
- rspec-expectations (~> 3.9.0)
22
- rspec-mocks (~> 3.9.0)
23
- rspec-core (3.9.3)
24
- rspec-support (~> 3.9.3)
25
- rspec-expectations (3.9.3)
19
+ rspec (3.10.0)
20
+ rspec-core (~> 3.10.0)
21
+ rspec-expectations (~> 3.10.0)
22
+ rspec-mocks (~> 3.10.0)
23
+ rspec-core (3.10.1)
24
+ rspec-support (~> 3.10.0)
25
+ rspec-expectations (3.10.1)
26
26
  diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.9.0)
28
- rspec-mocks (3.9.1)
27
+ rspec-support (~> 3.10.0)
28
+ rspec-mocks (3.10.2)
29
29
  diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.9.0)
31
- rspec-support (3.9.4)
30
+ rspec-support (~> 3.10.0)
31
+ rspec-support (3.10.3)
32
32
  rubocop (0.93.1)
33
33
  parallel (~> 1.10)
34
34
  parser (>= 2.7.1.5)
@@ -56,4 +56,4 @@ DEPENDENCIES
56
56
  yard
57
57
 
58
58
  BUNDLED WITH
59
- 1.17.3
59
+ 2.2.15
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'set'
4
+
3
5
  module TheHelp
4
6
  # Adds a callback DSL to including classes
5
7
  #
@@ -129,12 +131,12 @@ module TheHelp
129
131
 
130
132
  def _provides_callbacks_define_wrapper(name, without_logging)
131
133
  make_public = public_method_defined?(name)
132
- define_method(name) do |*args|
134
+ define_method(name) do |*args, **options|
133
135
  if defined?(logger)
134
136
  logger.debug("#{self.class.name}/#{__id__} received callback " \
135
137
  ":#{name}.")
136
138
  end
137
- send(without_logging, *args)
139
+ send(without_logging, *args, **options)
138
140
  self
139
141
  end
140
142
  private name unless make_public
@@ -106,8 +106,8 @@ module TheHelp
106
106
  # Convenience method to instantiate the service and immediately call it
107
107
  #
108
108
  # Any arguments are passed to #initialize
109
- def call(*args, &block)
110
- new(*args).call(&block)
109
+ def call(*args, **options, &block)
110
+ new(*args, **options).call(&block)
111
111
  end
112
112
 
113
113
  # :nodoc:
@@ -324,10 +324,12 @@ module TheHelp
324
324
  stop!
325
325
  end
326
326
 
327
- def stop!(type: :error, value: nil)
328
- if value.nil?
327
+ def stop!(type: :error, **opts)
328
+ value = opts.fetch(:value) { |key|
329
329
  check_result!
330
- elsif type == :success
330
+ throw :stop
331
+ }
332
+ if type == :success
331
333
  result.success value
332
334
  else
333
335
  result.error value
@@ -339,13 +341,23 @@ module TheHelp
339
341
  raise TheHelp::NoResultError if result.pending?
340
342
  end
341
343
 
342
- def run_callback(callback, *args)
344
+ def run_callback(callback, *args, **options)
343
345
  continue = false
344
346
  continue = catch(:stop) do
345
- callback.call(*args)
347
+ if options.empty?
348
+ # Satisfies Ruby 2.4 and friends - where straightforward `, **options`
349
+ # still lands as separated `{}` parameter into the lambda..
350
+ callback.call(*args)
351
+ else
352
+ callback.call(*args, **options)
353
+ end
346
354
  true
347
355
  end
348
356
  self.stop_caller ||= !continue
349
357
  end
358
+
359
+ def delegate_to_service(*args, **options)
360
+ call_service(*args, **options) { |result| @result = result }
361
+ end
350
362
  end
351
363
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TheHelp
4
- VERSION = '3.3.0'
4
+ VERSION = '3.5.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_help
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wilger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-28 00:00:00.000000000 Z
11
+ date: 2022-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -87,7 +87,6 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".circleci/config.yml"
91
90
  - ".gitignore"
92
91
  - ".rspec"
93
92
  - ".rubocop.yml"
data/.circleci/config.yml DELETED
@@ -1,35 +0,0 @@
1
- # Ruby CircleCI 2.0 configuration file
2
- #
3
- # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
- #
5
- version: 2
6
- jobs:
7
- build:
8
- docker:
9
- # specify the version you desire here
10
- - image: circleci/ruby:2.4.1
11
-
12
- steps:
13
- - checkout
14
-
15
- # Download and cache dependencies
16
- - restore_cache:
17
- keys:
18
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
19
- # fallback to using the latest cache if no exact match is found
20
- - v1-dependencies-
21
-
22
- - run:
23
- name: install dependencies
24
- command: |
25
- bundle install --jobs=4 --retry=3 --path vendor/bundle
26
-
27
- - save_cache:
28
- paths:
29
- - ./vendor/bundle
30
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
31
-
32
- # run tests!
33
- - run:
34
- name: run tests
35
- command: bundle exec rspec