teckel 0.1.0 → 0.2.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.
@@ -2,10 +2,11 @@
2
2
 
3
3
  module Teckel
4
4
  module Operation
5
- # Works just like +Teckel::Operation+, but wraps +output+ and +error+ into a +Teckel::Result+.
5
+ # Works just like {Teckel::Operation}, but wraps +output+ and +error+ into a
6
+ # {Teckel::Result Teckel::Result}.
6
7
  #
7
- # A +Teckel::Result+ given as +input+ will get unwrapped, so that the original +value+
8
- # gets passed to your Operation code.
8
+ # If a {Teckel::Result Teckel::Result} is given as +input+, it will get unwrapped,
9
+ # so that the original {Teckel::Result#value} gets passed to your Operation code.
9
10
  #
10
11
  # @example
11
12
  #
@@ -17,14 +18,13 @@ module Teckel
17
18
  # error Types::Hash.schema(message: Types::String, errors: Types::Array.of(Types::Hash))
18
19
  #
19
20
  # # @param [Hash<name: String, age: Integer>]
20
- # # @return [User | Hash<message: String, errors: [Hash]>]
21
+ # # @return [User,Hash<message: String, errors: [Hash]>]
21
22
  # def call(input)
22
23
  # user = User.new(name: input[:name], age: input[:age])
23
- # if user.safe
24
- # # exits early with success, prevents any further execution
25
- # success!(user)
24
+ # if user.save
25
+ # success!(user) # exits early with success, prevents any further execution
26
26
  # else
27
- # fail!(message: "Could not safe User", errors: user.errors)
27
+ # fail!(message: "Could not save User", errors: user.errors)
28
28
  # end
29
29
  # end
30
30
  # end
@@ -43,9 +43,10 @@ module Teckel
43
43
  # # Unwrapping failure input:
44
44
  # CreateUser.call(Teckel::Result.new({name: "Bob", age: 23}, false)).success.is_a?(User) #=> true
45
45
  #
46
- # @api public
46
+ # @!visibility public
47
47
  module Results
48
- module InstanceMethods
48
+ # Overwrites the defaults {Teckel::Operation::Runner} to un/wrap input, output and error
49
+ class Runner < Teckel::Operation::Runner
49
50
  private
50
51
 
51
52
  def build_input(input)
@@ -64,7 +65,7 @@ module Teckel
64
65
 
65
66
  def self.included(receiver)
66
67
  receiver.send :include, Teckel::Operation unless Teckel::Operation >= receiver
67
- receiver.send :include, InstanceMethods
68
+ receiver.send :runner, Runner
68
69
  end
69
70
  end
70
71
  end
data/lib/teckel/result.rb CHANGED
@@ -24,13 +24,13 @@ module Teckel
24
24
  # Teckel::Result.new("some error", false).success("other default") #=> "other default"
25
25
  # Teckel::Result.new("some error", false).success { |value| "Failed: #{value}" } #=> "Failed: some error"
26
26
  #
27
- # @api public
27
+ # @!visibility public
28
28
  class Result
29
29
  # @param value [Mixed] the value/payload of the result.
30
30
  # @param success [Bool] whether this is a successful result
31
31
  def initialize(value, success)
32
32
  @value = value
33
- @success = success
33
+ @success = (!!success).freeze
34
34
  end
35
35
 
36
36
  # @!attribute [r] value
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Teckel
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/teckel.gemspec CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 2.0"
28
- spec.add_development_dependency "dry-struct", ">= 1.1.1", "< 2"
29
28
  spec.add_development_dependency "rake", ">= 10.0"
30
29
  spec.add_development_dependency "rspec", "~> 3.0"
31
30
  spec.add_development_dependency "yard"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teckel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Schulze
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-02 00:00:00.000000000 Z
11
+ date: 2020-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,26 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
- - !ruby/object:Gem::Dependency
28
- name: dry-struct
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.1.1
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '2'
37
- type: :development
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 1.1.1
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '2'
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: rake
49
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +88,7 @@ executables: []
108
88
  extensions: []
109
89
  extra_rdoc_files: []
110
90
  files:
91
+ - ".codeclimate.yml"
111
92
  - ".github/workflows/ci.yml"
112
93
  - ".github/workflows/pages.yml"
113
94
  - ".gitignore"
@@ -118,7 +99,6 @@ files:
118
99
  - CHANGELOG.md
119
100
  - DEVELOPMENT.md
120
101
  - Gemfile
121
- - Gemfile.lock
122
102
  - LICENSE
123
103
  - README.md
124
104
  - Rakefile
@@ -130,6 +110,7 @@ files:
130
110
  - lib/teckel.rb
131
111
  - lib/teckel/chain.rb
132
112
  - lib/teckel/config.rb
113
+ - lib/teckel/none.rb
133
114
  - lib/teckel/operation.rb
134
115
  - lib/teckel/operation/results.rb
135
116
  - lib/teckel/result.rb
@@ -154,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
135
  - !ruby/object:Gem::Version
155
136
  version: '0'
156
137
  requirements: []
157
- rubygems_version: 3.0.3
138
+ rubygems_version: 3.1.2
158
139
  signing_key:
159
140
  specification_version: 4
160
141
  summary: Operations with enforced in/out/err data structures
data/Gemfile.lock DELETED
@@ -1,71 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- teckel (0.1.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- concurrent-ruby (1.1.5)
10
- diff-lcs (1.3)
11
- dry-configurable (0.9.0)
12
- concurrent-ruby (~> 1.0)
13
- dry-core (~> 0.4, >= 0.4.7)
14
- dry-container (0.7.2)
15
- concurrent-ruby (~> 1.0)
16
- dry-configurable (~> 0.1, >= 0.1.3)
17
- dry-core (0.4.9)
18
- concurrent-ruby (~> 1.0)
19
- dry-equalizer (0.3.0)
20
- dry-inflector (0.2.0)
21
- dry-logic (1.0.5)
22
- concurrent-ruby (~> 1.0)
23
- dry-core (~> 0.2)
24
- dry-equalizer (~> 0.2)
25
- dry-struct (1.2.0)
26
- dry-core (~> 0.4, >= 0.4.3)
27
- dry-equalizer (~> 0.3)
28
- dry-types (~> 1.0)
29
- ice_nine (~> 0.11)
30
- dry-types (1.2.2)
31
- concurrent-ruby (~> 1.0)
32
- dry-container (~> 0.3)
33
- dry-core (~> 0.4, >= 0.4.4)
34
- dry-equalizer (~> 0.3)
35
- dry-inflector (~> 0.1, >= 0.1.2)
36
- dry-logic (~> 1.0, >= 1.0.2)
37
- ice_nine (0.11.2)
38
- minitest (5.13.0)
39
- rake (13.0.1)
40
- rspec (3.9.0)
41
- rspec-core (~> 3.9.0)
42
- rspec-expectations (~> 3.9.0)
43
- rspec-mocks (~> 3.9.0)
44
- rspec-core (3.9.1)
45
- rspec-support (~> 3.9.1)
46
- rspec-expectations (3.9.0)
47
- diff-lcs (>= 1.2.0, < 2.0)
48
- rspec-support (~> 3.9.0)
49
- rspec-mocks (3.9.1)
50
- diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.9.0)
52
- rspec-support (3.9.2)
53
- yard (0.9.22)
54
- yard-doctest (0.1.17)
55
- minitest
56
- yard
57
-
58
- PLATFORMS
59
- ruby
60
-
61
- DEPENDENCIES
62
- bundler (~> 2.0)
63
- dry-struct (>= 1.1.1, < 2)
64
- rake (>= 10.0)
65
- rspec (~> 3.0)
66
- teckel!
67
- yard
68
- yard-doctest
69
-
70
- BUNDLED WITH
71
- 2.1.2