zx-monads 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -29
- data/lib/zx/maybe.rb +8 -5
- data/lib/zx/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fad11ef006f65fc1217e5bbf480844d4367b3d7d8f72f486af7c8b3601de4cb
|
4
|
+
data.tar.gz: fca3ee13b064db8da1a706ad749e8af4a3f9ceddfd19876be49eaec28dcadc93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ccf1a54176be479cb0e09ad8c2bab177668e8d9219bbc4dbe113ee855231d11cb79c3dbc5ece68b9a2d7ab2208b17cb005eb3eb4beff1ef8ee9b21faae9ff6f
|
7
|
+
data.tar.gz: 27430e4a6472dabc923357276cd3c39ca55814ddec4c7f0b6c012f60fedd3bc61080ce9d82428ed095992c96b8087d987a403d30a2fe3abc8cad7c25484c7a29
|
data/README.md
CHANGED
@@ -68,11 +68,11 @@ class Order
|
|
68
68
|
end
|
69
69
|
|
70
70
|
class Order
|
71
|
-
include Zx::
|
71
|
+
include Zx::Maybeable
|
72
72
|
end
|
73
73
|
|
74
74
|
class ProcessOrder < Zx::Steps
|
75
|
-
#
|
75
|
+
# include Zx::Maybeable included now!
|
76
76
|
end
|
77
77
|
```
|
78
78
|
|
@@ -102,35 +102,35 @@ end
|
|
102
102
|
### ZX::Maybe
|
103
103
|
|
104
104
|
```ruby
|
105
|
-
result = Maybe[1] # or Maybe.of(1)
|
105
|
+
result = Zx::Maybe[1] # or Maybe.of(1)
|
106
106
|
```
|
107
107
|
|
108
108
|
```ruby
|
109
|
-
result = Maybe[nil] # or Maybe.of(nil)
|
109
|
+
result = Zx::Maybe[nil] # or Maybe.of(nil)
|
110
110
|
```
|
111
111
|
|
112
112
|
```ruby
|
113
|
-
result = Maybe[1].map{ _1 + 2}
|
113
|
+
result = Zx::Maybe[1].map{ _1 + 2}
|
114
114
|
# -> Some(3)
|
115
115
|
```
|
116
116
|
|
117
117
|
```ruby
|
118
|
-
result = Maybe[nil].map{ _1 + 2}
|
118
|
+
result = Zx::Maybe[nil].map{ _1 + 2}
|
119
119
|
# -> None
|
120
120
|
```
|
121
121
|
|
122
122
|
```ruby
|
123
|
-
result = Maybe.of(1).or(2)
|
123
|
+
result = Zx::Maybe.of(1).or(2)
|
124
124
|
result.or(2) # 1
|
125
125
|
```
|
126
126
|
|
127
127
|
```ruby
|
128
|
-
result = Maybe.of(' ').or(2)
|
128
|
+
result = Zx::Maybe.of(' ').or(2)
|
129
129
|
result.or(2) # 2
|
130
130
|
```
|
131
131
|
|
132
132
|
```ruby
|
133
|
-
result = Maybe.of(' ').or(2)
|
133
|
+
result = Zx::Maybe.of(' ').or(2)
|
134
134
|
result.or(2) # 2
|
135
135
|
```
|
136
136
|
|
@@ -143,7 +143,7 @@ order = {
|
|
143
143
|
}
|
144
144
|
}
|
145
145
|
|
146
|
-
price = Maybe[order]
|
146
|
+
price = Zx::Maybe[order]
|
147
147
|
.map { _1[:shopping] }
|
148
148
|
.map { _1[:banana] }
|
149
149
|
.map { _1[:price] }
|
@@ -152,13 +152,13 @@ price = Maybe[order]
|
|
152
152
|
|
153
153
|
# or using #dig
|
154
154
|
|
155
|
-
price = Maybe[order].dig(:shopping, :banana, :price)
|
155
|
+
price = Zx::Maybe[order].dig(:shopping, :banana, :price)
|
156
156
|
# -> Some(10.0)
|
157
157
|
|
158
|
-
price_none = Maybe[order].dig(:shopping, :banana, :price_non_exists)
|
158
|
+
price_none = Zx::Maybe[order].dig(:shopping, :banana, :price_non_exists)
|
159
159
|
# -> None
|
160
160
|
|
161
|
-
price_or = Maybe[order].dig(:shopping, :banana, :price_non_exists).or(10.0)
|
161
|
+
price_or = Zx::Maybe[order].dig(:shopping, :banana, :price_non_exists).or(10.0)
|
162
162
|
# -> Some(10.0)
|
163
163
|
```
|
164
164
|
|
@@ -167,11 +167,11 @@ class Response
|
|
167
167
|
attr_reader :body
|
168
168
|
|
169
169
|
def initialize(new_body)
|
170
|
-
@body = Maybe[new_body]
|
170
|
+
@body = Zx::Maybe[new_body]
|
171
171
|
end
|
172
172
|
|
173
173
|
def change(new_body)
|
174
|
-
@body = Maybe[new_body]
|
174
|
+
@body = Zx::Maybe[new_body]
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
@@ -182,7 +182,7 @@ response.change({ status: 200 })
|
|
182
182
|
expect(response.body).to be_some
|
183
183
|
|
184
184
|
response_status = response.body.match(
|
185
|
-
some: ->(body) { Maybe[body].map { _1.fetch(:status) }.unwrap },
|
185
|
+
some: ->(body) { Zx::Maybe[body].map { _1.fetch(:status) }.unwrap },
|
186
186
|
none: -> {}
|
187
187
|
)
|
188
188
|
```
|
@@ -196,7 +196,7 @@ response = Response.new(dump) # It's receive an JSON stringified
|
|
196
196
|
|
197
197
|
module StatusCodeUnwrapModule
|
198
198
|
def self.call(body)
|
199
|
-
Maybe[body]
|
199
|
+
Zx::Maybe[body]
|
200
200
|
.map{ JSON(_1, symbolize_names: true) }
|
201
201
|
.dig(:status, :code)
|
202
202
|
.apply(&:to_i)
|
@@ -215,11 +215,11 @@ expect(response_status).to eq(300)
|
|
215
215
|
You can use `>>` to compose many callables, like this.
|
216
216
|
|
217
217
|
```rb
|
218
|
-
sum = ->(x) { Maybe::Some[x + 1] }
|
218
|
+
sum = ->(x) { Zx::Maybe::Some[x + 1] }
|
219
219
|
|
220
|
-
subtract = ->(x) { Maybe::Some[x - 1] }
|
220
|
+
subtract = ->(x) { Zx::Maybe::Some[x - 1] }
|
221
221
|
|
222
|
-
result = Maybe[1] >> \
|
222
|
+
result = Zx::Maybe[1] >> \
|
223
223
|
sum >> \
|
224
224
|
subtract
|
225
225
|
|
@@ -229,11 +229,11 @@ expect(result.unwrap).to eq(1)
|
|
229
229
|
If handle None, no worries.
|
230
230
|
|
231
231
|
```rb
|
232
|
-
sum = ->(x) { Maybe::Some[x + 1] }
|
232
|
+
sum = ->(x) { Zx::Maybe::Some[x + 1] }
|
233
233
|
|
234
|
-
subtract = ->(_) { Maybe::None.new }
|
234
|
+
subtract = ->(_) { Zx::Maybe::None.new }
|
235
235
|
|
236
|
-
result = Maybe[1] \
|
236
|
+
result = Zx::Maybe[1] \
|
237
237
|
>> sum \
|
238
238
|
>> subtract
|
239
239
|
|
@@ -243,7 +243,7 @@ expect(result.unwrap).to be_nil
|
|
243
243
|
```rb
|
244
244
|
class Order
|
245
245
|
def self.sum(x)
|
246
|
-
Maybe[{ number: x + 1 }]
|
246
|
+
Zx::Maybe[{ number: x + 1 }]
|
247
247
|
end
|
248
248
|
end
|
249
249
|
|
@@ -258,7 +258,7 @@ expect(result.unwrap).to be(2)
|
|
258
258
|
|
259
259
|
```rb
|
260
260
|
class Order
|
261
|
-
include Zx::
|
261
|
+
include Zx::Maybeable
|
262
262
|
|
263
263
|
def self.sum(x)
|
264
264
|
new.sum(x)
|
@@ -280,7 +280,7 @@ expect(result.unwrap).to be(2)
|
|
280
280
|
|
281
281
|
```rb
|
282
282
|
class Order
|
283
|
-
include Zx::
|
283
|
+
include Zx::Maybeable
|
284
284
|
|
285
285
|
def self.sum(x)
|
286
286
|
new.sum(x)
|
@@ -305,7 +305,7 @@ expect(number.unwrap).to be(0) # nil.to_i == 0
|
|
305
305
|
|
306
306
|
```rb
|
307
307
|
class Order
|
308
|
-
include Zx::
|
308
|
+
include Zx::Maybeable
|
309
309
|
|
310
310
|
def self.sum(x)
|
311
311
|
new.sum(x)
|
@@ -327,7 +327,7 @@ With default value, in None case.
|
|
327
327
|
|
328
328
|
```rb
|
329
329
|
class Order
|
330
|
-
include Zx::
|
330
|
+
include Zx::Maybeable
|
331
331
|
|
332
332
|
def self.sum(x)
|
333
333
|
new.sum(x)
|
@@ -347,7 +347,7 @@ expect(result.unwrap).to be(2)
|
|
347
347
|
|
348
348
|
```rb
|
349
349
|
class Order
|
350
|
-
include Zx::
|
350
|
+
include Zx::Maybeable
|
351
351
|
|
352
352
|
def self.sum(x)
|
353
353
|
new.sum(x)
|
data/lib/zx/maybe.rb
CHANGED
@@ -173,20 +173,20 @@ module Zx
|
|
173
173
|
end
|
174
174
|
|
175
175
|
module ClassMethods
|
176
|
-
None = ->(
|
176
|
+
None = ->(value = nil) { Zx::Maybe::None.new(value) }
|
177
177
|
Some = ->(*kwargs) { Zx::Maybe::Some.new(*kwargs) }
|
178
178
|
Maybe = ->(*kwargs) { Zx::Maybe.of(*kwargs) }
|
179
179
|
|
180
180
|
def Maybe(*kwargs)
|
181
|
-
|
181
|
+
Maybe[*kwargs]
|
182
182
|
end
|
183
183
|
|
184
184
|
def Some(*kwargs)
|
185
|
-
|
185
|
+
Some[*kwargs]
|
186
186
|
end
|
187
187
|
|
188
|
-
def None(
|
189
|
-
Zx::Maybe
|
188
|
+
def None(value = nil)
|
189
|
+
Zx::Maybe.of(value)
|
190
190
|
end
|
191
191
|
|
192
192
|
def Try(default = nil, options = {})
|
@@ -196,4 +196,7 @@ module Zx
|
|
196
196
|
end
|
197
197
|
end
|
198
198
|
end
|
199
|
+
|
200
|
+
include Maybe::ClassMethods
|
201
|
+
extend Maybe::ClassMethods
|
199
202
|
end
|
data/lib/zx/version.rb
CHANGED