option 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/option.rb CHANGED
@@ -84,6 +84,13 @@ class SomeClass < OptionClass
84
84
  def or_else(&blk)
85
85
  self
86
86
  end
87
+
88
+ def flatten
89
+ case get
90
+ when OptionClass then get.flatten
91
+ else self
92
+ end
93
+ end
87
94
  end
88
95
 
89
96
  class NoneClass < OptionClass
@@ -143,6 +150,10 @@ class NoneClass < OptionClass
143
150
  def or_else(&blk)
144
151
  assert_option(blk.call)
145
152
  end
153
+
154
+ def flatten
155
+ self
156
+ end
146
157
  end
147
158
 
148
159
  None = NoneClass.new
@@ -1,3 +1,3 @@
1
1
  module Option
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/spec/option_spec.rb CHANGED
@@ -74,6 +74,10 @@ describe NoneClass do
74
74
  it "#or_else should raise a TypeError if an Option is not returned" do
75
75
  lambda { None.or_else { value } }.must_raise TypeError
76
76
  end
77
+
78
+ it "#flatten should return itself" do
79
+ None.flatten.must_be_none
80
+ end
77
81
  end
78
82
 
79
83
  describe SomeClass do
@@ -165,6 +169,10 @@ describe SomeClass do
165
169
  it "should be aliased to Some" do
166
170
  Some.new(value).must_be_some(value)
167
171
  end
172
+
173
+ it "#flatten" do
174
+ Some(Some(Some(value))).flatten.must_be_some(value)
175
+ end
168
176
  end
169
177
 
170
178
  describe OptionClass do
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.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,30 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-20 00:00:00.000000000 Z
12
+ date: 2012-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70281246888180 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - =
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
21
  version: 0.9.2.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70281246888180
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - '='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.2.2
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: minitest
27
- requirement: &70281246887640 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
- - - =
35
+ - - '='
31
36
  - !ruby/object:Gem::Version
32
37
  version: 3.4.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70281246887640
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.4.0
36
46
  description: Ruby port of Scala's Option Monad
37
47
  email:
38
48
  - rob.ares@gmail.com
@@ -64,15 +74,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
74
  - - ! '>='
65
75
  - !ruby/object:Gem::Version
66
76
  version: '0'
77
+ segments:
78
+ - 0
79
+ hash: 3506142581205413460
67
80
  required_rubygems_version: !ruby/object:Gem::Requirement
68
81
  none: false
69
82
  requirements:
70
83
  - - ! '>='
71
84
  - !ruby/object:Gem::Version
72
85
  version: '0'
86
+ segments:
87
+ - 0
88
+ hash: 3506142581205413460
73
89
  requirements: []
74
90
  rubyforge_project:
75
- rubygems_version: 1.8.10
91
+ rubygems_version: 1.8.24
76
92
  signing_key:
77
93
  specification_version: 3
78
94
  summary: Option attempts to be faithful to the useful parts of the scala api. We lose