cuprum 0.8.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -129,8 +129,15 @@ module Cuprum::Utils
129
129
  end # eigenclass
130
130
 
131
131
  # (see Cuprum::Command#call)
132
- def call *args, &block
133
- Cuprum::Utils::InstanceSpy.send(:call_spies_for, self, *args, &block)
132
+ def call *args, **kwargs, &block
133
+ if kwargs.empty?
134
+ Cuprum::Utils::InstanceSpy.send(:call_spies_for, self, *args, &block)
135
+ else
136
+ # :nocov:
137
+ Cuprum::Utils::InstanceSpy
138
+ .send(:call_spies_for, self, *args, **kwargs, &block)
139
+ # :nocov:
140
+ end
134
141
 
135
142
  super
136
143
  end # method call
@@ -8,7 +8,7 @@ module Cuprum
8
8
  # Major version.
9
9
  MAJOR = 0
10
10
  # Minor version.
11
- MINOR = 8
11
+ MINOR = 10
12
12
  # Patch version.
13
13
  PATCH = 0
14
14
  # Prerelease version.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuprum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob "Merlin" Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-01 00:00:00.000000000 Z
11
+ date: 2020-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sleeping_king_studios-tools
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.7'
19
+ version: '0.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.7'
26
+ version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -116,15 +116,22 @@ files:
116
116
  - lib/cuprum/chaining.rb
117
117
  - lib/cuprum/command.rb
118
118
  - lib/cuprum/command_factory.rb
119
+ - lib/cuprum/currying.rb
120
+ - lib/cuprum/currying/curried_command.rb
121
+ - lib/cuprum/error.rb
119
122
  - lib/cuprum/errors.rb
120
- - lib/cuprum/errors/process_not_implemented_error.rb
123
+ - lib/cuprum/errors/command_not_implemented.rb
124
+ - lib/cuprum/errors/operation_not_called.rb
121
125
  - lib/cuprum/operation.rb
122
126
  - lib/cuprum/processing.rb
123
127
  - lib/cuprum/result.rb
124
128
  - lib/cuprum/result_helpers.rb
129
+ - lib/cuprum/rspec.rb
130
+ - lib/cuprum/rspec/be_a_result.rb
131
+ - lib/cuprum/rspec/be_a_result_matcher.rb
132
+ - lib/cuprum/steps.rb
125
133
  - lib/cuprum/utils.rb
126
134
  - lib/cuprum/utils/instance_spy.rb
127
- - lib/cuprum/utils/result_not_empty_warning.rb
128
135
  - lib/cuprum/version.rb
129
136
  homepage: http://sleepingkingstudios.com
130
137
  licenses:
@@ -145,8 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
152
  - !ruby/object:Gem::Version
146
153
  version: '0'
147
154
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.6.13
155
+ rubygems_version: 3.1.2
150
156
  signing_key:
151
157
  specification_version: 4
152
158
  summary: An opinionated implementation of the Command pattern.
@@ -1,14 +0,0 @@
1
- require 'cuprum/errors'
2
-
3
- module Cuprum::Errors
4
- # Error class for calling a Command that was not given a definition block
5
- # or have a #process method defined.
6
- class ProcessNotImplementedError < StandardError
7
- # Error message for a ProcessNotImplementedError.
8
- DEFAULT_MESSAGE = 'no implementation defined for command'.freeze
9
-
10
- def initialize message = nil
11
- super(message || DEFAULT_MESSAGE)
12
- end
13
- end
14
- end
@@ -1,72 +0,0 @@
1
- require 'cuprum/utils'
2
-
3
- module Cuprum::Utils
4
- # Helper class for building a warning message when a command returns a result,
5
- # but the command's current result already has errors, a set status, or is
6
- # halted.
7
- class ResultNotEmptyWarning
8
- MESSAGE = '#process returned a result, but '.freeze
9
- private_constant :MESSAGE
10
-
11
- # @param result [Cuprum::Result] The result for which to generate the
12
- # warning message.
13
- def initialize result
14
- @result = result
15
- end # constructor
16
-
17
- # @return [String] The warning message for the given result.
18
- def message
19
- return ''.freeze if warnings.empty?
20
-
21
- MESSAGE + humanize_list(warnings).freeze
22
- end # method message
23
-
24
- # @return [Boolean] True if a warning is generated, otherwise false.
25
- def warning?
26
- !warnings.empty?
27
- end # method warning?
28
-
29
- private
30
-
31
- attr_reader :result
32
-
33
- def errors_not_empty_warning
34
- return nil if result.errors.empty?
35
-
36
- "there were already errors #{@result.errors.inspect}".freeze
37
- end # method errors_not_empty_warning
38
-
39
- def halted_warning
40
- return nil unless result.halted?
41
-
42
- 'the command was halted'.freeze
43
- end # method halted_warning
44
-
45
- def humanize_list list, empty_value: ''
46
- return empty_value if list.size.zero?
47
-
48
- return list.first.to_s if list.size == 1
49
-
50
- return "#{list.first} and #{list.last}" if list.size == 2
51
-
52
- "#{list[0...-1].join ', '}, and #{list.last}"
53
- end # method humanize_list
54
-
55
- def status_set_warning
56
- status = result.send(:status)
57
-
58
- return nil if status.nil?
59
-
60
- "the status was set to #{status.inspect}".freeze
61
- end # method status_set_warning
62
-
63
- def warnings
64
- @warnings ||=
65
- [
66
- errors_not_empty_warning,
67
- status_set_warning,
68
- halted_warning
69
- ].compact
70
- end # method warnings
71
- end # class
72
- end # module