option 0.0.1 → 0.0.2
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/.travis.yml +10 -0
- data/README.md +3 -0
- data/Rakefile +2 -0
- data/lib/option.rb +5 -5
- data/lib/option/version.rb +1 -1
- data/option.gemspec +1 -1
- data/spec/option_spec.rb +3 -7
- metadata +9 -8
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -53,6 +53,9 @@ foo.map { |v| v * 2 }.map { |v| v.upcase }.get_or_else { "missing" } #=> BARBAR
|
|
53
53
|
None.fold(-> { "missing" }) { |v| v.upcase } #=> missing
|
54
54
|
```
|
55
55
|
|
56
|
+
## Build Status
|
57
|
+
<a href="http://travis-ci.org/rares/option"></a>
|
58
|
+
|
56
59
|
## Contributing
|
57
60
|
|
58
61
|
1. Fork it
|
data/Rakefile
CHANGED
data/lib/option.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class
|
1
|
+
class OptionClass
|
2
2
|
|
3
3
|
def or_nil
|
4
4
|
end
|
@@ -8,7 +8,7 @@ class Option
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
class
|
11
|
+
class SomeClass < OptionClass
|
12
12
|
|
13
13
|
def initialize(value)
|
14
14
|
@value = value
|
@@ -47,7 +47,7 @@ class Some < Option
|
|
47
47
|
def flat_map(&blk)
|
48
48
|
result = blk.call(get)
|
49
49
|
case result
|
50
|
-
when
|
50
|
+
when OptionClass then return result
|
51
51
|
else raise TypeError, "Must be Option"
|
52
52
|
end
|
53
53
|
end
|
@@ -61,7 +61,7 @@ class Some < Option
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
class NoneClass <
|
64
|
+
class NoneClass < OptionClass
|
65
65
|
|
66
66
|
def to_a
|
67
67
|
[]
|
@@ -107,7 +107,7 @@ end
|
|
107
107
|
None = NoneClass.new
|
108
108
|
|
109
109
|
def Some(value)
|
110
|
-
|
110
|
+
SomeClass.new(value)
|
111
111
|
end
|
112
112
|
|
113
113
|
def Option(value)
|
data/lib/option/version.rb
CHANGED
data/option.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["rob.ares@gmail.com"]
|
7
7
|
gem.description = %q{Ruby port of Scala's Option Monad}
|
8
8
|
gem.summary = %q{Option attempts to be faithful to the useful parts of the scala api. We lose the type safety but still is quite useful when dealing with optional values.}
|
9
|
-
gem.homepage = "http://www.
|
9
|
+
gem.homepage = "http://www.github.com/rares/option"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/spec/option_spec.rb
CHANGED
@@ -64,7 +64,7 @@ describe NoneClass do
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
describe
|
67
|
+
describe SomeClass do
|
68
68
|
|
69
69
|
it "#to_a returns the value wrapped in an array" do
|
70
70
|
Some(value).to_a.must_equal([value])
|
@@ -132,12 +132,8 @@ describe Some do
|
|
132
132
|
Some(value).fold(proc { value * 2 }) { |v| v * 3 }.must_equal(36)
|
133
133
|
end
|
134
134
|
|
135
|
-
it "should be aliased to Some" do
|
136
|
-
Some.must_equal(Some)
|
137
|
-
end
|
138
|
-
|
139
135
|
it "should wrap the creation of a Some" do
|
140
|
-
mock(
|
136
|
+
mock(SomeClass).new(value)
|
141
137
|
|
142
138
|
Some(value)
|
143
139
|
|
@@ -145,7 +141,7 @@ describe Some do
|
|
145
141
|
end
|
146
142
|
end
|
147
143
|
|
148
|
-
describe
|
144
|
+
describe OptionClass do
|
149
145
|
|
150
146
|
it "must return a some if the passed value is not nil" do
|
151
147
|
Option(value).must_equal(Some(value))
|
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.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-09-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70192629393660 !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: *70192629393660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rr
|
27
|
-
requirement: &
|
27
|
+
requirement: &70192629393160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.0.4
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70192629393160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70192629392700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - =
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 3.4.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70192629392700
|
47
47
|
description: Ruby port of Scala's Option Monad
|
48
48
|
email:
|
49
49
|
- rob.ares@gmail.com
|
@@ -52,6 +52,7 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- .gitignore
|
55
|
+
- .travis.yml
|
55
56
|
- Gemfile
|
56
57
|
- LICENSE
|
57
58
|
- README.md
|
@@ -60,7 +61,7 @@ files:
|
|
60
61
|
- lib/option/version.rb
|
61
62
|
- option.gemspec
|
62
63
|
- spec/option_spec.rb
|
63
|
-
homepage: http://www.
|
64
|
+
homepage: http://www.github.com/rares/option
|
64
65
|
licenses: []
|
65
66
|
post_install_message:
|
66
67
|
rdoc_options: []
|