option 0.5.0 → 0.6.0

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