monad-maybe 0.9.5 → 0.9.7
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 +12 -12
- data/VERSION +1 -1
- data/lib/monad/maybe.rb +9 -7
- data/lib/monad/maybe/json.rb +26 -26
- data/lib/monad/maybe/just.rb +0 -4
- data/monad-maybe.gemspec +2 -2
- data/test/maybe.rb +9 -0
- 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: 98844158ce3a0e0e1dfc165e8d984a46cf0d7434
|
4
|
+
data.tar.gz: db1a6787a2e5823e8fae1154467477d38f031fd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3039effd1abcd59df0a1e695bfbc3287cc13185a41c361df105e4011a421735536c241795ba09b8f060ce82e78efe08a9a9284b08ed00d974d22ea3e3bd310a9
|
7
|
+
data.tar.gz: b7f35337ccad21f7d47d8022514fbb795e849550065f939ae7a318868070b32c291c2a4d57b8c351693098718d21a65d3f5e471b27e472d0caed58b52dc5ca6a
|
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
`monad-maybe`
|
2
|
-
=============
|
3
|
-
|
4
|
-
An Implementation of Haskell's Maybe Mondad
|
5
|
-
-------------------------------------------
|
6
|
-
|
7
|
-
This is an attempt to implement Haskell's Maybe monad in a Ruby-ish way with as little monkey patching as possible.
|
8
|
-
|
9
|
-
SEE ALSO
|
10
|
-
========
|
11
|
-
[andand](http://)
|
12
|
-
[Haskell's Maybe Monad](http://)
|
1
|
+
`monad-maybe`
|
2
|
+
=============
|
3
|
+
|
4
|
+
An Implementation of Haskell's Maybe Mondad
|
5
|
+
-------------------------------------------
|
6
|
+
|
7
|
+
This is an attempt to implement Haskell's Maybe monad in a Ruby-ish way with as little monkey patching as possible.
|
8
|
+
|
9
|
+
SEE ALSO
|
10
|
+
========
|
11
|
+
[andand](http://)
|
12
|
+
[Haskell's Maybe Monad](http://)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.7
|
data/lib/monad/maybe.rb
CHANGED
@@ -7,8 +7,8 @@ require_relative 'maybe/list'
|
|
7
7
|
# Some monkey patching and constructor methods.
|
8
8
|
#
|
9
9
|
module Enumerable
|
10
|
-
def to_maybe
|
11
|
-
first.to_maybe
|
10
|
+
def to_maybe(&blk)
|
11
|
+
first.to_maybe(&blk)
|
12
12
|
end
|
13
13
|
|
14
14
|
def maybe_map
|
@@ -17,8 +17,9 @@ module Enumerable
|
|
17
17
|
end
|
18
18
|
|
19
19
|
class Object
|
20
|
-
def to_maybe
|
21
|
-
Monad::Maybe::Just.new(self)
|
20
|
+
def to_maybe(&blk)
|
21
|
+
j = Monad::Maybe::Just.new(self)
|
22
|
+
blk ? j.maybe(&blk) : j
|
22
23
|
end
|
23
24
|
|
24
25
|
def maybe?
|
@@ -35,7 +36,7 @@ class Object
|
|
35
36
|
end
|
36
37
|
|
37
38
|
class NilClass
|
38
|
-
def to_maybe
|
39
|
+
def to_maybe(&blk)
|
39
40
|
Monad::Maybe::Nothing.instance
|
40
41
|
end
|
41
42
|
end
|
@@ -48,8 +49,9 @@ module Monad
|
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
51
|
-
def maybe(obj)
|
52
|
-
Monad::Maybe.return(obj)
|
52
|
+
def maybe(obj, &blk)
|
53
|
+
m = Monad::Maybe.return(obj)
|
54
|
+
blk ? m.maybe(&blk) : m
|
53
55
|
end
|
54
56
|
|
55
57
|
def just(o)
|
data/lib/monad/maybe/json.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
#
|
4
|
-
# Adds JSON conversions to Just, Nothing, and List
|
5
|
-
#
|
6
|
-
module Monad
|
7
|
-
module Maybe
|
8
|
-
class Just
|
9
|
-
def to_json(*args)
|
10
|
-
value.to_json(*args)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Nothing
|
15
|
-
def to_json(*args)
|
16
|
-
'null'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class List
|
21
|
-
def to_json(*args)
|
22
|
-
to_a.to_json(*args)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Adds JSON conversions to Just, Nothing, and List
|
5
|
+
#
|
6
|
+
module Monad
|
7
|
+
module Maybe
|
8
|
+
class Just
|
9
|
+
def to_json(*args)
|
10
|
+
value.to_json(*args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Nothing
|
15
|
+
def to_json(*args)
|
16
|
+
'null'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class List
|
21
|
+
def to_json(*args)
|
22
|
+
to_a.to_json(*args)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/monad/maybe/just.rb
CHANGED
data/monad-maybe.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "monad-maybe"
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Delon Newman"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-07-16"
|
13
13
|
s.description = "This is an attempt to implement Haskell's Maybe monad in a Ruby-ish way."
|
14
14
|
s.email = "delon.newman@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/test/maybe.rb
CHANGED
@@ -79,6 +79,15 @@ class MaybeTest < Test::Unit::TestCase
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
def test_to_maybe_blocks
|
83
|
+
1.to_maybe { |v| assert_equal 1, v }
|
84
|
+
|
85
|
+
assert_nothing_raised do
|
86
|
+
nil.to_maybe { raise Exception, "This should not run" }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
|
82
91
|
def test_maybe_block_return_value_and_type
|
83
92
|
m = maybe(1).maybe { |n| n + 1 }
|
84
93
|
assert_equal 2, m.value
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monad-maybe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delon Newman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jeweler
|