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 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