or_else 0.0.2 → 0.0.3

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: 79c6cb9790f5406597f0893b6e215b33c94b8c0a
4
- data.tar.gz: 075f9a3527c45f78fb9645b32b172efb94b028c5
3
+ metadata.gz: 909970b9f0b817e9663f287b9aa0d80a2c7d4cda
4
+ data.tar.gz: 5d4e9eba25df54eb18c26a2bd6231ce83222709c
5
5
  SHA512:
6
- metadata.gz: dfb0c9517204b5b98b32d1a444defd6ac0cc3456e9df200ada6b6dd227f8088c5573f54099e2ba320c820a18d9cf64a857ddc803903c39aebdea402fa1217f8d
7
- data.tar.gz: 56772dd2e9003a4aef7e4f18dd4acfe8fcabf26069556ae180ad86c5dde779717f50c517a565498079a395f3bc8b65f6f0ce6e6f16ea8868125777891c8abbb8
6
+ metadata.gz: 1963215cf7c74943f5d0fbd5a68bc67d20a397dd3a7e1a8f0b5d269d6b407b6c25d2a9f046951ab6078e16d7e2a740381a29cd880d25d292a0fd1c02646ab5ad
7
+ data.tar.gz: b1799d401e976b8211648390ec42733d4250c531af2cbd9720513faeedb76344701e4425837883406441fc297cf7f13b12542b72b1dda05ed08427c8cc5fdb7b
data/README.md CHANGED
@@ -19,21 +19,27 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  ```ruby
22
- value = Maybe(nil) # => <OrElse::NothingClass>
22
+ value = Maybe(nil) # => Nothing
23
23
  value.empty? # => true
24
24
  value.nil? # => true
25
25
  value.exists? # => false
26
- value.map { |v| v } # => <OrElse::NothingClass>
27
- value.flat_map { |v| v } # => <OrElse::NothingClass>
26
+ value.map { |v| v } # => Nothing (Block is ignored)
27
+ value.flat_map { |v| Maybe(v) } # => Nothing (Block is ignored)
28
28
  value.or_else { 'foo' } # => 'foo'
29
29
 
30
30
  value = Maybe('value') # => <OrElse::Just>
31
31
  value.empty? # => false
32
32
  value.nil? # => false
33
33
  value.exists? # => true
34
- value.map { |v| v } # => 'value'
35
- value.flat_map { |v| v } # => 'value'
36
- value.or_else { 'foo' } # => 'value'
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)
37
+ ```
38
+
39
+ Real life example:
40
+
41
+ ```
42
+ comment = Maybe(post.comments.first).or_else { post.comments.build }
37
43
  ```
38
44
 
39
45
  ## Contributing
data/lib/or_else/just.rb CHANGED
@@ -8,7 +8,7 @@ module OrElse
8
8
  end
9
9
 
10
10
  def map
11
- yield Just.new(value)
11
+ Maybe(yield value)
12
12
  end
13
13
 
14
14
  def flat_map
@@ -1,3 +1,3 @@
1
1
  module OrElse
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -26,20 +26,24 @@ module OrElse
26
26
  context 'when initialized with 1' do
27
27
  let(:val) { 1 }
28
28
 
29
- specify { expect { |b| just.map(&b) }.to yield_with_args(Just) }
29
+ specify { expect { |b| just.map(&b) }.to yield_with_args(val) }
30
30
 
31
- it 'yields a Just with the value 1' do
32
- just.map { |j| expect(j.value).to eq 1 }
31
+ it 'yields the value 1 and wraps the block in a Maybe' do
32
+ expect(just.map { |j| j }.value).to eq val
33
+ end
34
+
35
+ it 'yields the value 1 and is Nothing when the block evaluates to nil' do
36
+ expect(just.map { |j| nil }).to eq Nothing
33
37
  end
34
38
  end
35
39
 
36
40
  context 'when initialized with "foo"' do
37
41
  let(:val) { 'foo' }
38
42
 
39
- specify { expect { |b| just.map(&b) }.to yield_with_args(Just) }
43
+ specify { expect { |b| just.map(&b) }.to yield_with_args(val) }
40
44
 
41
- it 'yields a Just with the value "foo"' do
42
- just.map { |j| expect(j.value).to eq 'foo' }
45
+ it 'yields the value "foo" and wraps the block in a Maybe' do
46
+ expect(just.map { |j| j }.value).to eq val
43
47
  end
44
48
  end
45
49
  end
@@ -48,13 +52,13 @@ module OrElse
48
52
  context 'when initialized with 1' do
49
53
  let(:val) { 1 }
50
54
 
51
- specify { expect { |b| just.flat_map(&b) }.to yield_with_args(1) }
55
+ specify { expect { |b| just.flat_map(&b) }.to yield_with_args(val) }
52
56
  end
53
57
 
54
58
  context 'when initialized with "foo"' do
55
59
  let(:val) { 'foo' }
56
60
 
57
- specify { expect { |b| just.flat_map(&b) }.to yield_with_args('foo') }
61
+ specify { expect { |b| just.flat_map(&b) }.to yield_with_args(val) }
58
62
  end
59
63
  end
60
64
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: or_else
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - alexpeachey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2014-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler