monadic 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,4 +1,6 @@
1
1
  # Changelog
2
+ ## v0.7.4 ##
3
+ `Nothing.to_json` yields `nil`
2
4
 
3
5
  ## v0.7.3
4
6
  Nothing works with `===`
data/lib/monadic/maybe.rb CHANGED
@@ -101,6 +101,10 @@ module Monadic
101
101
  'Nothing'
102
102
  end
103
103
 
104
+ def to_json(*args)
105
+ 'null'
106
+ end
107
+
104
108
  def truly?
105
109
  false
106
110
  end
@@ -1,3 +1,3 @@
1
1
  module Monadic
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
data/spec/maybe_spec.rb CHANGED
@@ -21,58 +21,7 @@ describe Monadic::Maybe do
21
21
 
22
22
  it 'on non-existant methods, returns Nothing' do
23
23
  Maybe({}).a.b.c.should == Nothing
24
- end
25
-
26
- describe Monadic::Nothing do
27
- it_behaves_like 'a Monad' do
28
- let(:monad) { Nothing }
29
- end
30
-
31
- it '===' do
32
- (Maybe(nil) === Nothing).should be_true
33
- end
34
-
35
- it 'Nothing stays Nothing' do
36
- Maybe(nil).fetch.should == Nothing
37
- Maybe(nil)._.should == Nothing
38
- Maybe(nil).empty?.should be_true
39
- end
40
-
41
- it 'Nothing#to_s is "Nothing"' do
42
- option = Maybe(nil)
43
- "#{option}".should == "Nothing"
44
- Nothing.to_s.should == "Nothing"
45
- Nothing.to_s(1, 2).should == "Nothing"
46
- end
47
-
48
- it 'Nothing is always empty' do
49
- Nothing.empty?.should be_true
50
- Maybe(nil).empty?.should be_true
51
- end
52
-
53
- it '[] as value always returns Nothing()' do
54
- Maybe([]).a.should == Nothing
55
- end
56
-
57
- it 'is always empty and false' do
58
- Nothing.empty?.should be_true
59
- Nothing.truly?.should be_false
60
- end
61
-
62
- it 'returns Nothing when calling #name' do
63
- hd = Nothing
64
- hd.name.should == Monadic::Nothing
65
- end
66
-
67
- it 'Nothing#or returns the alternative' do
68
- Maybe(nil).or(1).should == Just(1)
69
- Nothing.or(1).should == Just(1)
70
- Nothing.or(Just(nil)).should == Just(nil)
71
- Nothing.something.or(1).should == Just(1)
72
- Nothing.something.or(Just(nil)).should == Just(nil)
73
- Nothing.or('').should == Just('')
74
- end
75
- end
24
+ end
76
25
 
77
26
  describe Monadic::Just do
78
27
  it_behaves_like 'a Monad' do
@@ -189,4 +138,9 @@ describe Monadic::Maybe do
189
138
  Maybe(nil).proxy.downcase.capitalize.bar.should == Nothing
190
139
  Maybe({a: 1}).proxy.__fetch__.should == {a: 1}
191
140
  end
141
+
142
+ it "maybe_map takes an Enumerable and Maybe's each element " do
143
+ Maybe([{}]).flat_map { |e| e[:angry]}.compact.should == Nothing
144
+ Maybe([{:angry => 'nerds'}, {}]).flat_map { |e| e[:angry]}.compact.should == Just(['nerds'])
145
+ end
192
146
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe Monadic::Nothing do
4
+ it_behaves_like 'a Monad' do
5
+ let(:monad) { Nothing }
6
+ end
7
+
8
+ it '===' do
9
+ (Maybe(nil) === Nothing).should be_true
10
+ end
11
+
12
+ it 'Nothing stays Nothing' do
13
+ Maybe(nil).fetch.should == Nothing
14
+ Maybe(nil)._.should == Nothing
15
+ Maybe(nil).empty?.should be_true
16
+ end
17
+
18
+ it 'Nothing#to_s is "Nothing"' do
19
+ option = Maybe(nil)
20
+ "#{option}".should == "Nothing"
21
+ Nothing.to_s.should == "Nothing"
22
+ Nothing.to_s(1, 2).should == "Nothing"
23
+ end
24
+
25
+ it 'Nothing#to_json is nil' do
26
+ Maybe(nil).to_json(:only => :a).should == 'null'
27
+ Nothing.to_json.should == 'null'
28
+ end
29
+
30
+ it 'Nothing is always empty' do
31
+ Nothing.empty?.should be_true
32
+ Maybe(nil).empty?.should be_true
33
+ end
34
+
35
+ it '[] as value always returns Nothing()' do
36
+ Maybe([]).a.should == Nothing
37
+ end
38
+
39
+ it 'is always empty and false' do
40
+ Nothing.empty?.should be_true
41
+ Nothing.truly?.should be_false
42
+ end
43
+
44
+ it 'returns Nothing when calling #name' do
45
+ hd = Nothing
46
+ hd.name.should == Monadic::Nothing
47
+ end
48
+
49
+ it 'Nothing#or returns the alternative' do
50
+ Maybe(nil).or(1).should == Just(1)
51
+ Nothing.or(1).should == Just(1)
52
+ Nothing.or(Just(nil)).should == Just(nil)
53
+ Nothing.something.or(1).should == Just(1)
54
+ Nothing.something.or(Just(nil)).should == Just(nil)
55
+ Nothing.or('').should == Just('')
56
+ end
57
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monadic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-01 00:00:00.000000000 Z
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -160,6 +160,7 @@ files:
160
160
  - spec/maybe_spec.rb
161
161
  - spec/monad_axioms.rb
162
162
  - spec/monad_spec.rb
163
+ - spec/nothing_spec.rb
163
164
  - spec/spec_helper.rb
164
165
  - spec/try_spec.rb
165
166
  - spec/validation_spec.rb
@@ -197,6 +198,7 @@ test_files:
197
198
  - spec/maybe_spec.rb
198
199
  - spec/monad_axioms.rb
199
200
  - spec/monad_spec.rb
201
+ - spec/nothing_spec.rb
200
202
  - spec/spec_helper.rb
201
203
  - spec/try_spec.rb
202
204
  - spec/validation_spec.rb