result-monad 0.1.2 → 0.1.3
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/lib/result-monad/error.rb +5 -5
- data/lib/result-monad/version.rb +1 -1
- data/lib/result-monad.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f6827e932e166f2ef6c04af4fab7a181e7ae2f60
|
|
4
|
+
data.tar.gz: 5b9302941c4cd0244b35991fcecd7cd825511f10
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db75419f936a2215d174ffd2a733fc1d9b04a927c81738d429f0deecc3398f9df2cf165301b06592267da8bff0a37ea1ebf94e0481c375c2236935fba47cd3da
|
|
7
|
+
data.tar.gz: 3991d42013a5f7690a49c9a5cc7f8cf2167c243fa40ce839ad251fbb64cb646428a5bb1c0c230ad171438316477d540598bc316dc1ea18fb11ca8790b5d86646
|
data/lib/result-monad/error.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
class Error
|
|
2
|
-
def initialize(
|
|
3
|
-
@
|
|
2
|
+
def initialize(value)
|
|
3
|
+
@value = value
|
|
4
4
|
end
|
|
5
5
|
|
|
6
6
|
def map!(&block)
|
|
7
|
-
@
|
|
7
|
+
@value = Capture {block.call(@value)}
|
|
8
8
|
self
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def map(&block)
|
|
12
|
-
capture_as_error { block.call(@
|
|
12
|
+
capture_as_error { block.call(@value) }
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def to_s
|
|
16
|
-
"Error(#{@
|
|
16
|
+
"Error(#{@value})"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
private
|
data/lib/result-monad/version.rb
CHANGED
data/lib/result-monad.rb
CHANGED
|
@@ -105,6 +105,24 @@ class Result
|
|
|
105
105
|
ok? ? unwrap : cons
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
+
def map_when(kind, &block)
|
|
109
|
+
@m.map(&block) if val.is_a?(kind)
|
|
110
|
+
self
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def do_when(kind, &block)
|
|
114
|
+
Capture { block.call } if val.is_a?(kind)
|
|
115
|
+
self
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def raise_or_return!
|
|
119
|
+
if ok?
|
|
120
|
+
return val
|
|
121
|
+
else
|
|
122
|
+
raise val
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
108
126
|
# Constructors
|
|
109
127
|
def self.error(error)
|
|
110
128
|
new(Error.new(error))
|