or_else 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 909970b9f0b817e9663f287b9aa0d80a2c7d4cda
4
- data.tar.gz: 5d4e9eba25df54eb18c26a2bd6231ce83222709c
3
+ metadata.gz: e403ed565733f3d923aee1ec9353e495e95a2536
4
+ data.tar.gz: f4ffee374ca8a749251e93d9f3e67b7afbba39bf
5
5
  SHA512:
6
- metadata.gz: 1963215cf7c74943f5d0fbd5a68bc67d20a397dd3a7e1a8f0b5d269d6b407b6c25d2a9f046951ab6078e16d7e2a740381a29cd880d25d292a0fd1c02646ab5ad
7
- data.tar.gz: b1799d401e976b8211648390ec42733d4250c531af2cbd9720513faeedb76344701e4425837883406441fc297cf7f13b12542b72b1dda05ed08427c8cc5fdb7b
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) # => Nothing
23
- value.empty? # => true
24
- value.nil? # => true
25
- value.exists? # => false
26
- value.map { |v| v } # => Nothing (Block is ignored)
27
- value.flat_map { |v| Maybe(v) } # => Nothing (Block is ignored)
28
- value.or_else { 'foo' } # => 'foo'
29
-
30
- value = Maybe('value') # => <OrElse::Just>
31
- value.empty? # => false
32
- value.nil? # => false
33
- value.exists? # => true
34
- value.map { |v| v } # => <OrElse::Just> (Block is yielded the bare value and the block is wrapped in a Maybe)
35
- value.flat_map { |v| Maybe(v) } # => <OrElse::Just> (Block is yielded the bare value)
36
- value.or_else { 'foo' } # => 'value' (Block is ignored)
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
@@ -12,7 +12,8 @@ module OrElse
12
12
  end
13
13
 
14
14
  def flat_map
15
- yield value
15
+ t = yield value
16
+ t.is_a?(Maybe) ? t : Maybe(t)
16
17
  end
17
18
 
18
19
  def empty?
@@ -1,3 +1,3 @@
1
1
  module OrElse
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -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 initialized with "foo"' do
59
- let(:val) { 'foo' }
58
+ context 'when the block result is not a Maybe' do
59
+ let(:val) { 1 }
60
60
 
61
- specify { expect { |b| just.flat_map(&b) }.to yield_with_args(val) }
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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: or_else
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - alexpeachey