or_else 0.0.5 → 0.0.6

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: eecae4c515e30eb7444310ddad11f7decc47d06e
4
- data.tar.gz: 8f8c822cdd62cb58b7fceff8b9b5b5734f02fcaf
3
+ metadata.gz: ea1f770c7189e52acfa57c07f7e4a007f5431391
4
+ data.tar.gz: 958ee299da814ce469991f9b9766526aa701a944
5
5
  SHA512:
6
- metadata.gz: 4add6df6ad601b2290bb7dad6e259031a5d22ddef709cb28726df6b16344cdeae0bb7423d874aed45c98fe261b470657e693426e32c9632aa74bff16a5e5a04a
7
- data.tar.gz: 00aad4d57d23adf625c2e804ad33c2e4d11eddc90097af1c9a39cb62a630b9c263b948783fb4153a24331903811b8c11dff4515b729f841da73f9e19882635c1
6
+ metadata.gz: 05725eadd1e158819d61be707034c36f60ba267ab6def5c07f2d3ed39128b96d57bfd3b1b1be5924e618cf9775c4f1a6a978c85b8e365f1a07c3fdfc4b2843cd
7
+ data.tar.gz: 13854e54283bb8cd998b7788b3b75d8442ba0a07ec58914fed0b83f18c575ed753d0f43a5851f626ab2d9d88dda9d874cc2779146bf01d22b36a82fd501fa11a
data/README.md CHANGED
@@ -30,6 +30,12 @@ Maybe(nil).map { |v| v } # => Nothing
30
30
  Maybe(nil).flat_map { |v| v } # => Nothing
31
31
  # Returns the result of the block
32
32
  Maybe(nil).or_else { 'foo' } # => 'foo'
33
+ # Block is ignored
34
+ Maybe(nil).each { |v| puts v } # => nil
35
+ # Block is ignored
36
+ Maybe(nil).all? { |v| v == 1 } # => true
37
+ # Block is ignored
38
+ Maybe(nil).any? { |v| v == 1 } # => true
33
39
 
34
40
  # Justs
35
41
  Maybe('value') # => Just('value')
@@ -40,6 +46,13 @@ Maybe('value').map { |v| v } # => Just('value')
40
46
  Maybe('value').flat_map { |v| v } # => Maybe('value')
41
47
  # Block is ignored
42
48
  Maybe('value').or_else { 'foo' } # => 'value'
49
+ # Yields the value to the block
50
+ Maybe('value').each { |v| puts v } # => nil (Side effect puts 'value')
51
+ # Is true if the block evalutes true, otherwise false
52
+ Maybe(1).all? { |v| v == 1 } # => true
53
+ Maybe(1).all? { |v| v == 2 } # => false
54
+ # Is true if the block evalutes true, otherwise false
55
+ Maybe(1).any? { |v| v == 1 } # => true
43
56
 
44
57
  #more examples
45
58
  Maybe(1).map { |v| nil } # => Just(nil)
data/lib/or_else/just.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  module OrElse
2
2
  class Just < Maybe
3
3
 
4
- attr_reader :value
5
-
6
4
  def initialize(val)
7
5
  @value = val
8
6
  end
@@ -23,9 +21,30 @@ module OrElse
23
21
  !empty?
24
22
  end
25
23
 
24
+ def present?
25
+ exists?
26
+ end
27
+
26
28
  def or_else
27
29
  value
28
30
  end
31
+
32
+ def each
33
+ yield value
34
+ nil
35
+ end
36
+
37
+ def all?
38
+ !!(yield value)
39
+ end
40
+
41
+ def any?(&block)
42
+ all?(&block)
43
+ end
44
+
45
+ private
46
+
47
+ attr_reader :value
29
48
  end
30
49
  end
31
50
 
@@ -24,9 +24,24 @@ module OrElse
24
24
  !empty?
25
25
  end
26
26
 
27
+ def present?
28
+ exists?
29
+ end
30
+
27
31
  def or_else
28
32
  yield
29
33
  end
34
+
35
+ def each
36
+ end
37
+
38
+ def all?
39
+ true
40
+ end
41
+
42
+ def any?
43
+ all?
44
+ end
30
45
  end
31
46
  end
32
47
 
@@ -1,3 +1,3 @@
1
1
  module OrElse
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -9,17 +9,7 @@ module OrElse
9
9
  end
10
10
 
11
11
  describe '#value' do
12
- context 'when initialized with 1' do
13
- let(:val) { 1 }
14
-
15
- specify { expect(just.value).to eq 1 }
16
- end
17
-
18
- context 'when initialized with "foo"' do
19
- let(:val) { 'foo' }
20
-
21
- specify { expect(just.value).to eq 'foo' }
22
- end
12
+ specify { expect { nothing.value }.to raise_error }
23
13
  end
24
14
 
25
15
  describe '#map' do
@@ -29,11 +19,11 @@ module OrElse
29
19
  specify { expect { |b| just.map(&b) }.to yield_with_args(val) }
30
20
 
31
21
  it 'yields the value 1 and wraps the block in a Just' do
32
- expect(just.map { |j| j }.value).to eq val
22
+ expect(just.map { |j| j }.or_else).to eq val
33
23
  end
34
24
 
35
25
  it 'yields the value 1 and is Just(nil) when the block evaluates to nil' do
36
- expect(just.map { |j| nil }.value).to eq nil
26
+ expect(just.map { |j| nil }.or_else).to eq nil
37
27
  end
38
28
  end
39
29
 
@@ -43,7 +33,7 @@ module OrElse
43
33
  specify { expect { |b| just.map(&b) }.to yield_with_args(val) }
44
34
 
45
35
  it 'yields the value "foo" and wraps the block in a Maybe' do
46
- expect(just.map { |j| j }.value).to eq val
36
+ expect(just.map { |j| j }.or_else).to eq val
47
37
  end
48
38
  end
49
39
  end
@@ -59,7 +49,7 @@ module OrElse
59
49
  let(:val) { 1 }
60
50
 
61
51
  it 'wraps the result in a Maybe' do
62
- expect(just.flat_map { |j| j }.value).to eq val
52
+ expect(just.flat_map { |j| j }.or_else).to eq val
63
53
  end
64
54
 
65
55
  context 'when the block exists with a nil' do
@@ -73,13 +63,13 @@ module OrElse
73
63
  describe '#empty?' do
74
64
  let(:val) { 1 }
75
65
 
76
- specify { expect(just.empty?).to be_false }
66
+ specify { expect(just.empty?).to be false }
77
67
  end
78
68
 
79
69
  describe '#exists?' do
80
70
  let(:val) { 1 }
81
71
 
82
- specify { expect(just.exists?).to be_true }
72
+ specify { expect(just.exists?).to be true }
83
73
  end
84
74
 
85
75
  describe '#or_else' do
@@ -88,5 +78,25 @@ module OrElse
88
78
  specify { expect(just.or_else).to eq 1 }
89
79
  end
90
80
 
81
+ describe '#each' do
82
+ let(:val) { 1 }
83
+
84
+ specify { expect { |b| just.each(&b) }.to yield_with_args(val) }
85
+ end
86
+
87
+ describe '#all?' do
88
+ let(:val) { 1 }
89
+
90
+ specify { expect(just.all? { |v| v == 1 }).to be true }
91
+ specify { expect(just.all? { |v| v == 2 }).to be false }
92
+ end
93
+
94
+ describe '#any?' do
95
+ let(:val) { 1 }
96
+
97
+ specify { expect(just.any? { |v| v == 1 }).to be true }
98
+ specify { expect(just.any? { |v| v == 2 }).to be false }
99
+ end
100
+
91
101
  end
92
102
  end
@@ -17,19 +17,33 @@ module OrElse
17
17
  end
18
18
 
19
19
  describe '#empty?' do
20
- specify { expect(nothing.empty?).to be_true }
20
+ specify { expect(nothing.empty?).to be true }
21
21
  end
22
22
 
23
23
  describe '#nil?' do
24
- specify { expect(nothing.nil?).to be_true }
24
+ specify { expect(nothing.nil?).to be true }
25
25
  end
26
26
 
27
27
  describe '#exists?' do
28
- specify { expect(nothing.exists?).to be_false }
28
+ specify { expect(nothing.exists?).to be false }
29
29
  end
30
30
 
31
31
  describe '#or_else' do
32
32
  specify { expect { |b| nothing.or_else(&b) }.to yield_control }
33
33
  end
34
+
35
+ describe '#each' do
36
+ specify { expect { |b| nothing.each(&b) }.not_to yield_control }
37
+ end
38
+
39
+ describe '#all?' do
40
+ specify { expect(nothing.all? { |v| v == 1 }).to be true }
41
+ specify { expect(nothing.all? { |v| v == 2 }).to be true }
42
+ end
43
+
44
+ describe '#any?' do
45
+ specify { expect(nothing.any? { |v| v == 1 }).to be true }
46
+ specify { expect(nothing.any? { |v| v == 2 }).to be true }
47
+ end
34
48
  end
35
49
  end
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.5
4
+ version: 0.0.6
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-14 00:00:00.000000000 Z
11
+ date: 2014-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler