monad-maybe 0.8.1 → 0.9.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 711b5f676d97b04b9a929f52a4b538b47e9a0f4c
4
- data.tar.gz: aa5c6a26e8d76ae71ac94116d7e24c30f58b05e4
3
+ metadata.gz: 6cb424b75bfc95f4cbf310c81e4856c84496466a
4
+ data.tar.gz: 910d72f9d700f125a7b7f284f4448d6c8dccb4db
5
5
  SHA512:
6
- metadata.gz: 160810dd5f538ca55768e5f6d7d925d546604a339636b398532f26280c9b0aad5d37d5880759df5f6ca08cd018397a12e5217e31477c92b954f6fe3c9bcee32d
7
- data.tar.gz: 5b919aea5a60ba2124e9acf81d77975654faeeb00c65fb12c11aac20b95d9aa29b2a10eaab9e4eef74a06a8e911e0e8dd77d22bde7c712b4fda6f7743534f352
6
+ metadata.gz: 7a3f329f7a1e1a1f24a3120673721ddc8fd410549c68abfe306f5b1771753f599c03005f2938407524db7118b02056c01d784bbda0d62e81405650c16b624d1e
7
+ data.tar.gz: ac4ea776251ffc0528a24c1653f17e3430bf462f02ccf038a57f4f96534aee2fd2d0d4357e182a0d2e37ae1f3f5a90ac0a933bc82e63abffcbb1e28f8278b675
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.9.0
@@ -36,12 +36,21 @@ module Monad
36
36
  def nothing?
37
37
  false
38
38
  end
39
+
40
+ def something?(&blk)
41
+ blk.call(self) if blk
42
+ true
43
+ end
39
44
  end
40
45
 
41
46
  class ::NilClass
42
47
  def maybe
43
48
  Nothing.instance.freeze
44
49
  end
50
+
51
+ def something?
52
+ false
53
+ end
45
54
  end
46
55
 
47
56
  def maybe(o)
@@ -21,6 +21,11 @@ module Monad
21
21
  def nothing?
22
22
  false
23
23
  end
24
+
25
+ def something?(&blk)
26
+ blk.call(value) if blk
27
+ true
28
+ end
24
29
 
25
30
  def just?
26
31
  true
@@ -14,6 +14,11 @@ module Monad
14
14
  def maybe?
15
15
  true
16
16
  end
17
+
18
+ def something?(&blk)
19
+ blk.call(select_just.value_map) if blk
20
+ true
21
+ end
17
22
 
18
23
  def <<(obj)
19
24
  @enum << obj if obj.just?
@@ -31,6 +31,7 @@ module Monad
31
31
  def just?
32
32
  false
33
33
  end
34
+ alias something? just?
34
35
 
35
36
  def unwrap(val)
36
37
  val
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "monad-maybe"
8
- s.version = "0.8.1"
8
+ s.version = "0.9.0"
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"]
@@ -46,4 +46,37 @@ class MaybeTest < Test::Unit::TestCase
46
46
  assert_equal xs.count, ys.count
47
47
  end
48
48
  end
49
+
50
+ def test_something?
51
+ assert_nothing_raised do
52
+ nil.something? do
53
+ raise Exception, "This should not be called"
54
+ end
55
+
56
+ nothing.something? do
57
+ raise Exception, "This should not be called"
58
+ end
59
+ end
60
+
61
+ assert_equal false, nil.something?
62
+ assert_equal false, nothing.something?
63
+
64
+ 1.something? do |n|
65
+ assert_equal 1, n
66
+ end
67
+
68
+ assert 1.something?
69
+
70
+ 1.maybe.something? do |n|
71
+ assert_equal 1, n
72
+ end
73
+
74
+ assert 1.maybe.something?
75
+
76
+ (0..10).maybe_map { |n| n % 2 == 0 ? nil : n }.something? do |xs|
77
+ assert_equal (0..10).select { |n| n % 2 != 0 }, xs
78
+ end
79
+
80
+ assert (0..10).maybe_map { |n| n }.something?
81
+ end
49
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monad-maybe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delon Newman