the_help 3.3.0 → 3.5.0

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: 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