resultr 0.1.0 → 0.1.1
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 +4 -4
- data/.gitignore +0 -2
- data/.rubocop.yml +3 -2
- data/.travis.yml +2 -2
- data/Gemfile +2 -0
- data/LICENSE +1 -1
- data/README.md +8 -8
- data/lib/resultr/result.rb +4 -6
- data/lib/resultr/result_proxy.rb +3 -2
- data/lib/resultr/version.rb +1 -1
- data/resultr.gemspec +7 -9
- metadata +25 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 80e9b2ad079e532efa5fc3c22fc41ffe9a73d4473daada027b4805f6f2848368
|
|
4
|
+
data.tar.gz: 52835242dcf0f188519148bd84ff812308b3867d45e3e13f7e709a4f08c0788e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f76ad34f37343b540559353862ab8bcbefe93ed2906f68757bde698b4defc6ca863d3246b8eb47cd7155a0b9741082a60a2d05a915a16012e50797f6cc56303f
|
|
7
|
+
data.tar.gz: 841edcaca64fc5141f9ef6c534fc5fd5a4fb570cf9ab783527ddece219a1a9638a409b2a1ca1ccb905f9db86ef020d0b6deab22b9ff69ef1c41d1fbddc71b7af
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -58,9 +58,9 @@ the block return or itself, depending on result kind.
|
|
|
58
58
|
```ruby
|
|
59
59
|
def shout(word)
|
|
60
60
|
if word == 'marco'
|
|
61
|
-
Resultr.ok
|
|
61
|
+
Resultr.ok 'polo'
|
|
62
62
|
else
|
|
63
|
-
Resultr.err
|
|
63
|
+
Resultr.err 'unknown word'
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
@@ -88,11 +88,11 @@ the block return or itself, depending on result kind.
|
|
|
88
88
|
# Using both to chaining the two kinds of results.
|
|
89
89
|
# ================================================
|
|
90
90
|
|
|
91
|
-
shout('marco').and_then { |v| "#{v}!" }.or_else { |r| "#{r}, try 'marco'" }
|
|
92
|
-
# => "polo!"
|
|
91
|
+
shout('marco').and_then { |v| Resultr.ok "#{v}!" }.or_else { |r| Resultr.err "#{r}, try 'marco'" }
|
|
92
|
+
# => <Resultr::Result @kind=:ok @value="polo!">
|
|
93
93
|
|
|
94
|
-
shout('foo').and_then { |v| "#{v}!" }.or_else { |r| "#{r}, try 'marco'" }
|
|
95
|
-
# => "unknown word, try 'marco'"
|
|
94
|
+
shout('foo').and_then { |v| Resultr.ok "#{v}!" }.or_else { |r| Resultr.err "#{r}, try 'marco'" }
|
|
95
|
+
# => <Resultr::Result @kind=:err @value="unknown word, try 'marco'">
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
### Elegant result branching
|
|
@@ -105,9 +105,9 @@ its called `#thus` and works like a flavor of case statement.
|
|
|
105
105
|
response = get('/posts')
|
|
106
106
|
|
|
107
107
|
if response.status == 200
|
|
108
|
-
Resultr.ok
|
|
108
|
+
Resultr.ok response.body
|
|
109
109
|
else
|
|
110
|
-
Resultr.err
|
|
110
|
+
Resultr.err response.body
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
data/lib/resultr/result.rb
CHANGED
|
@@ -34,12 +34,10 @@ module Resultr
|
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def expect!(message =
|
|
38
|
-
if ok?
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
raise ::Resultr::ExpectationError, message
|
|
42
|
-
end
|
|
37
|
+
def expect!(message = nil)
|
|
38
|
+
return @value if ok?
|
|
39
|
+
|
|
40
|
+
raise ::Resultr::ExpectationError, message || @value
|
|
43
41
|
end
|
|
44
42
|
|
|
45
43
|
def thus
|
data/lib/resultr/result_proxy.rb
CHANGED
|
@@ -5,6 +5,7 @@ module Resultr
|
|
|
5
5
|
def initialize(result)
|
|
6
6
|
@result = result
|
|
7
7
|
@resolved = false
|
|
8
|
+
@resolved_value = nil
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def ok
|
|
@@ -31,10 +32,10 @@ module Resultr
|
|
|
31
32
|
|
|
32
33
|
def resolve_result_if(condition)
|
|
33
34
|
if @resolved
|
|
34
|
-
@
|
|
35
|
+
@resolved_value
|
|
35
36
|
elsif @result.send(condition)
|
|
36
37
|
@resolved = true
|
|
37
|
-
yield @result.value
|
|
38
|
+
@resolved_value = yield @result.value
|
|
38
39
|
end
|
|
39
40
|
end
|
|
40
41
|
end
|
data/lib/resultr/version.rb
CHANGED
data/resultr.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
lib = File.expand_path('
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'resultr/version'
|
|
6
6
|
|
|
@@ -10,21 +10,19 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.authors = ['@leocamelo']
|
|
11
11
|
spec.email = ['leonardocamelo.nave@gmail.com']
|
|
12
12
|
spec.summary = 'Ruby beatiful results'
|
|
13
|
+
spec.description = 'Resultr provides a simple interface to function results'
|
|
13
14
|
spec.homepage = 'https://github.com/leocamelo/resultr'
|
|
14
15
|
spec.license = 'MIT'
|
|
15
16
|
spec.require_paths = ['lib']
|
|
16
17
|
|
|
17
|
-
spec.
|
|
18
|
-
Resultr provides a simple interface to work with
|
|
19
|
-
computation results, highly inspired by Rust results
|
|
20
|
-
for handling errors on function returns.
|
|
21
|
-
DESCRIPTION
|
|
18
|
+
spec.required_ruby_version = '>= 2.3'
|
|
22
19
|
|
|
23
20
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
24
21
|
f.match(%r{^(test)/})
|
|
25
22
|
end
|
|
26
23
|
|
|
27
|
-
spec.add_development_dependency 'bundler',
|
|
28
|
-
spec.add_development_dependency 'minitest', '~> 5.
|
|
29
|
-
spec.add_development_dependency 'rake',
|
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
25
|
+
spec.add_development_dependency 'minitest', '~> 5.11'
|
|
26
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
|
27
|
+
spec.add_development_dependency 'rubocop', '~> 0.73'
|
|
30
28
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resultr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "@leocamelo"
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2019-07-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -16,46 +16,57 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '2.0'
|
|
20
20
|
type: :development
|
|
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: '
|
|
26
|
+
version: '2.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: minitest
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '5.
|
|
33
|
+
version: '5.11'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '5.
|
|
40
|
+
version: '5.11'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '12.3'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
version: '12.3'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rubocop
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0.73'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0.73'
|
|
69
|
+
description: Resultr provides a simple interface to function results
|
|
59
70
|
email:
|
|
60
71
|
- leonardocamelo.nave@gmail.com
|
|
61
72
|
executables: []
|
|
@@ -87,15 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
87
98
|
requirements:
|
|
88
99
|
- - ">="
|
|
89
100
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: '
|
|
101
|
+
version: '2.3'
|
|
91
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
103
|
requirements:
|
|
93
104
|
- - ">="
|
|
94
105
|
- !ruby/object:Gem::Version
|
|
95
106
|
version: '0'
|
|
96
107
|
requirements: []
|
|
97
|
-
|
|
98
|
-
rubygems_version: 2.7.3
|
|
108
|
+
rubygems_version: 3.0.3
|
|
99
109
|
signing_key:
|
|
100
110
|
specification_version: 4
|
|
101
111
|
summary: Ruby beatiful results
|