trither 0.2.0 → 0.3.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: 4d73c6c96ece2573b67887e6feef8b384f53c01e
4
- data.tar.gz: 63a57e8ef95127aa9aed66ca51ab65002d8db93e
3
+ metadata.gz: 34ea63d76d95c6a027ec109a9ac9eadfb304f92e
4
+ data.tar.gz: 13a7149040a45cead9febb232303f2bafc0e31de
5
5
  SHA512:
6
- metadata.gz: 32eb3a466824cff5998acf5c6201af0e433126b26dc3aacc9befb3f0ff5ecc942db4bb4f362ad8e7a247fc626422c74fcef4f4967d4c80bc7f82c7417984bf49
7
- data.tar.gz: 62aab7284bfa0c556c13ed066fd996cafbdd5f60321e746aae74854a9236f8f82454e8681d5700b18ee0fc2d602cb1699dc96a302dc26a817a0154e9fe075bfd
6
+ metadata.gz: 993cb30ff85146ef4d7f3f48b609b5f1f959ff4beb739a5ee0330d8d75ebf0d3d9b4a39f40b7fad5b5a4d0b0458ceb4bc6ce4c696f3112d0717381b899016320
7
+ data.tar.gz: a24b0b2a1370e4269578e526de11a04c79c599f2c7749deb7900fbe6b94cd32764ba13a4a974c90926f386e48328b6c5152cf29a522bad1c9f85428d516bd772
@@ -1,3 +1,4 @@
1
1
  require 'trither/version'
2
2
  require 'trither/try'
3
3
  require 'trither/either'
4
+ require 'trither/option'
@@ -17,6 +17,14 @@ module Either
17
17
  def left
18
18
  @value
19
19
  end
20
+
21
+ def left_map
22
+ Left.new(yield @value)
23
+ end
24
+
25
+ def right_map
26
+ self
27
+ end
20
28
  end
21
29
 
22
30
  class Right < Base
@@ -31,5 +39,13 @@ module Either
31
39
  def right
32
40
  @value
33
41
  end
42
+
43
+ def left_map
44
+ self
45
+ end
46
+
47
+ def right_map
48
+ Right.new(yield @value)
49
+ end
34
50
  end
35
51
  end
@@ -0,0 +1,54 @@
1
+ module Option
2
+ def self.make(value)
3
+ if value.nil?
4
+ None
5
+ else
6
+ Some.new(value)
7
+ end
8
+ end
9
+
10
+ module None
11
+ def self.empty?
12
+ true
13
+ end
14
+
15
+ def self.fetch(default)
16
+ default
17
+ end
18
+
19
+ def self.map
20
+ self
21
+ end
22
+
23
+ def self.flat_map
24
+ self
25
+ end
26
+ end
27
+
28
+ class Some
29
+ def initialize(value)
30
+ @value = value
31
+ end
32
+
33
+ def empty?
34
+ false
35
+ end
36
+
37
+ def fetch(_default)
38
+ @value
39
+ end
40
+
41
+ def map
42
+ Option.make(yield @value)
43
+ end
44
+
45
+ def flat_map
46
+ result = yield @value
47
+ if result.nil?
48
+ None
49
+ else
50
+ result
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,3 +1,3 @@
1
1
  module Trither
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trither
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lyall Jonathan Di Trapani
@@ -56,17 +56,17 @@ dependencies:
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: Very simple implementations of Try and Either inspired by Scala
69
+ description: Very simple implementations of Try, Either, and Option inspired by Scala
70
70
  email:
71
71
  - lj.ditrapani@gmail.com
72
72
  executables: []
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - lib/trither.rb
77
77
  - lib/trither/either.rb
78
+ - lib/trither/option.rb
78
79
  - lib/trither/try.rb
79
80
  - lib/trither/version.rb
80
81
  homepage: https://github.com/lj-ditrapani/trither
@@ -100,5 +101,5 @@ rubyforge_project:
100
101
  rubygems_version: 2.2.2
101
102
  signing_key:
102
103
  specification_version: 4
103
- summary: Simple implementations of Try and Either
104
+ summary: Simple implementations of Try, Either, and Option
104
105
  test_files: []