or_else 0.0.3 → 0.0.4
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/README.md +23 -15
- data/lib/or_else/just.rb +2 -1
- data/lib/or_else/version.rb +1 -1
- data/spec/or_else/just_spec.rb +7 -5
- 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: e403ed565733f3d923aee1ec9353e495e95a2536
|
4
|
+
data.tar.gz: f4ffee374ca8a749251e93d9f3e67b7afbba39bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23987290677e25336fedb1c16aaff6e6a38c807c216c16cb82842990c964e6619f61359618e0d792d0370814c743c7fb28173ef4734f4e6fcd800fbb00c40228
|
7
|
+
data.tar.gz: 48821e7cbdb95382f28cf04dc70f2a8a8c632d427809eb83a0dc6f0a3517af8023474dd6ce58606945fa941033ba4f4ef72d87c12616fc30a530f499ab538226
|
data/README.md
CHANGED
@@ -19,21 +19,29 @@ Or install it yourself as:
|
|
19
19
|
## Usage
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
value = Maybe(nil)
|
23
|
-
value.empty?
|
24
|
-
value.nil?
|
25
|
-
value.exists?
|
26
|
-
|
27
|
-
value.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
value.
|
32
|
-
|
33
|
-
value
|
34
|
-
value.
|
35
|
-
value.
|
36
|
-
value.
|
22
|
+
value = Maybe(nil) # => Nothing
|
23
|
+
value.empty? # => true
|
24
|
+
value.nil? # => true
|
25
|
+
value.exists? # => false
|
26
|
+
# Block is ignored
|
27
|
+
value.map { |v| v } # => Nothing
|
28
|
+
# Block is ignored
|
29
|
+
value.flat_map { |v| Maybe(v) } # => Nothing
|
30
|
+
# Returns the result of the block
|
31
|
+
value.or_else { 'foo' } # => 'foo'
|
32
|
+
|
33
|
+
value = Maybe('value') # => <OrElse::Just>
|
34
|
+
value.empty? # => false
|
35
|
+
value.nil? # => false
|
36
|
+
value.exists? # => true
|
37
|
+
# Block is yielded the bare value and the result of the block is wrapped in a Maybe
|
38
|
+
value.map { |v| v } # => <OrElse::Just>
|
39
|
+
# Block is yielded the bare value, and the block exists with a Maybe so it is left as is
|
40
|
+
value.flat_map { |v| Maybe(v) } # => <OrElse::Just> (Block is yielded the bare value)
|
41
|
+
# Block is yielded the bare value, but did not exit with a Maybe so it is wrapped
|
42
|
+
value.flat_map { |v| v } # => <OrElse::Just>
|
43
|
+
# Block is ignored
|
44
|
+
value.or_else { 'foo' } # => 'value'
|
37
45
|
```
|
38
46
|
|
39
47
|
Real life example:
|
data/lib/or_else/just.rb
CHANGED
data/lib/or_else/version.rb
CHANGED
data/spec/or_else/just_spec.rb
CHANGED
@@ -49,16 +49,18 @@ module OrElse
|
|
49
49
|
end
|
50
50
|
|
51
51
|
describe '#flat_map' do
|
52
|
-
context 'when initialized with 1' do
|
53
|
-
let(:val) { 1 }
|
52
|
+
context 'when initialized with Maybe(1)' do
|
53
|
+
let(:val) { Maybe(1) }
|
54
54
|
|
55
55
|
specify { expect { |b| just.flat_map(&b) }.to yield_with_args(val) }
|
56
56
|
end
|
57
57
|
|
58
|
-
context 'when
|
59
|
-
let(:val) {
|
58
|
+
context 'when the block result is not a Maybe' do
|
59
|
+
let(:val) { 1 }
|
60
60
|
|
61
|
-
|
61
|
+
it 'wraps the result in a Maybe' do
|
62
|
+
expect(just.flat_map { |j| j }.value).to eq val
|
63
|
+
end
|
62
64
|
end
|
63
65
|
end
|
64
66
|
|