option 0.3.0 → 0.3.1
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.
- data/lib/option.rb +9 -0
- data/lib/option/version.rb +1 -1
- data/spec/option_spec.rb +12 -0
- metadata +6 -6
data/lib/option.rb
CHANGED
@@ -70,6 +70,11 @@ class SomeClass < OptionClass
|
|
70
70
|
def filter(&blk)
|
71
71
|
exists?(&blk) ? self : None
|
72
72
|
end
|
73
|
+
|
74
|
+
def inside(&blk)
|
75
|
+
blk.call(get)
|
76
|
+
self
|
77
|
+
end
|
73
78
|
end
|
74
79
|
|
75
80
|
class NoneClass < OptionClass
|
@@ -121,6 +126,10 @@ class NoneClass < OptionClass
|
|
121
126
|
def filter(&blk)
|
122
127
|
self
|
123
128
|
end
|
129
|
+
|
130
|
+
def inside(&blk)
|
131
|
+
self
|
132
|
+
end
|
124
133
|
end
|
125
134
|
|
126
135
|
None = NoneClass.new
|
data/lib/option/version.rb
CHANGED
data/spec/option_spec.rb
CHANGED
@@ -67,6 +67,12 @@ describe NoneClass do
|
|
67
67
|
it "should be aliased to None" do
|
68
68
|
None.must_be_instance_of(NoneClass)
|
69
69
|
end
|
70
|
+
|
71
|
+
it "#inside should return itself without invoking the block" do
|
72
|
+
expected = nil
|
73
|
+
None.inside { |v| expected = value }
|
74
|
+
expected.must_be_nil
|
75
|
+
end
|
70
76
|
end
|
71
77
|
|
72
78
|
describe SomeClass do
|
@@ -141,6 +147,12 @@ describe SomeClass do
|
|
141
147
|
None.filter { |i| i == 0 }.must_equal(None)
|
142
148
|
end
|
143
149
|
|
150
|
+
it "#inside should invoke the proc and return itself" do
|
151
|
+
expected = nil
|
152
|
+
Some(value).inside { |v| expected = v }.must_equal(Some(value))
|
153
|
+
expected.must_equal(value)
|
154
|
+
end
|
155
|
+
|
144
156
|
it "should wrap the creation of a Some" do
|
145
157
|
Some(value).must_be_instance_of(SomeClass)
|
146
158
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: option
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70142759119300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.9.2.2
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70142759119300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70142759118800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 3.4.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70142759118800
|
36
36
|
description: Ruby port of Scala's Option Monad
|
37
37
|
email:
|
38
38
|
- rob.ares@gmail.com
|