or_else 0.0.2 → 0.0.3

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