or_else 0.0.5 → 0.0.6

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