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 +4 -4
- data/README.md +13 -0
- data/lib/or_else/just.rb +21 -2
- data/lib/or_else/nothing_class.rb +15 -0
- data/lib/or_else/version.rb +1 -1
- data/spec/or_else/just_spec.rb +27 -17
- data/spec/or_else/nothing_spec.rb +17 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea1f770c7189e52acfa57c07f7e4a007f5431391
|
4
|
+
data.tar.gz: 958ee299da814ce469991f9b9766526aa701a944
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/or_else/version.rb
CHANGED
data/spec/or_else/just_spec.rb
CHANGED
@@ -9,17 +9,7 @@ module OrElse
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe '#value' do
|
12
|
-
|
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 }.
|
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 }.
|
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 }.
|
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 }.
|
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
|
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
|
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
|
20
|
+
specify { expect(nothing.empty?).to be true }
|
21
21
|
end
|
22
22
|
|
23
23
|
describe '#nil?' do
|
24
|
-
specify { expect(nothing.nil?).to
|
24
|
+
specify { expect(nothing.nil?).to be true }
|
25
25
|
end
|
26
26
|
|
27
27
|
describe '#exists?' do
|
28
|
-
specify { expect(nothing.exists?).to
|
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.
|
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-
|
11
|
+
date: 2014-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|