data.either 0.0.10 → 0.0.11

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: 5fe2793e1784adb3cc97f869231bd21502739341
4
- data.tar.gz: 5a3b0726f5e50e200d5db173885271f308f87000
3
+ metadata.gz: 716a0f0e519869682c5554f64500a3fbe5cd5bec
4
+ data.tar.gz: 1d73e02964b01840553f7272909c269fe95cf82a
5
5
  SHA512:
6
- metadata.gz: 938e7499cdeaa3ca5068e5d8992049ba3bd291ef64dffbd8fdcc1745ead7ffa1b362d7da7f727d090c0db7ba0af8dd922f045bb9c94673fabeed7c1d95c15911
7
- data.tar.gz: 6504e3f934878b873e88358b82aeddeaf859239594dd5ec90ca4c419a1a9301702abec1fb2fb3ef447eaabceb312d0809d0f19e9d79d814ddce42bb98fa96d90
6
+ metadata.gz: 4136c9b93f2c5d840d3c158f6a51045f3c3eb50ac0f7542ff828b8dc6a595808a9b970ff7ae1628ec7e29fcab3ea3867d89a68cb6f9a73c5b10e38ddb191b488
7
+ data.tar.gz: d159723ccbdd525385d37a7e11e1303f4ac2d76b6f06e47b9a56cc20495b0e16e6831d31e579c2d68fd0cec7773922f4957019d8ae05758b1c858ea44cfaaffa
@@ -21,5 +21,4 @@ module Control
21
21
  self.flat_map { |_| k }
22
22
  end
23
23
  end
24
-
25
24
  end
@@ -1,16 +1,16 @@
1
1
  require 'control/monad'
2
-
2
+ require 'union_type'
3
3
  # The `Either` union type represents values with two possibilities:
4
4
  #
5
5
  # `Either a b` is either `Left a` or `Right b`
6
6
  module Either
7
7
  include Comparable
8
8
  include Control::Monad
9
-
9
+ include UnionType
10
10
  # Either only contain one value @v
11
11
  # @return [Either]
12
- def initialize v
13
- @v = v
12
+ def initialize v=nil
13
+ @v=v
14
14
  end
15
15
 
16
16
  # default `false`, should override in {Left} or {Right}
@@ -115,27 +115,6 @@ module Either
115
115
  end
116
116
  end
117
117
 
118
- # similar to Scala's `match` for case class
119
- #
120
- # will pattern match the value out and pass to matched lambda
121
- # ```ruby
122
- # Right.new(1).when({Right: ->x{x+1} }) # => 2
123
- # Right.new(1).when({Left: ->x{x+1}) # => nil
124
- # Right.new(1) =~ ({Left: ->x{x+1}, _: ->x{x-1} }) # => 0
125
- # ```
126
- # @return [Either]
127
- def when what
128
- current_class = self.class.to_s.to_sym
129
- if what.include? current_class
130
- what[current_class].(@v)
131
- elsif what.include? :_
132
- what[:_].(@v)
133
- end
134
- end
135
-
136
- alias_method :match, :when
137
- alias_method :=~, :when
138
-
139
118
  # swap type of [Either]
140
119
  #
141
120
  # ```ruby
@@ -154,7 +133,7 @@ module Either
154
133
 
155
134
  alias_method :swap, :~@
156
135
  def each &block
157
- bimap(->_{}, &blcok)
136
+ bimap(->_{}, &block)
158
137
  end
159
138
 
160
139
  def to_a
@@ -180,15 +159,15 @@ module Either
180
159
  end
181
160
 
182
161
  # @return [String]
183
- def inspect
162
+ def to_s
184
163
  case self
185
164
  when Left
186
- "#<Left value=#{@v}>"
165
+ "#<Left #{@v}>"
187
166
  else
188
- "#<Right value=#{@v}>"
167
+ "#<Right #{@v}>"
189
168
  end
190
169
  end
191
-
170
+ alias_method :inspect, :to_s
192
171
  class << self
193
172
  # filter only {Right} value from List of {Either}
194
173
  #
@@ -234,9 +213,6 @@ end
234
213
 
235
214
  class Left
236
215
  include Either
237
- def initialize v=nil
238
- @v=v
239
- end
240
216
 
241
217
  # always true
242
218
  # @return [Boolean]
@@ -0,0 +1,23 @@
1
+ require 'helper'
2
+ module UnionType
3
+ extend Helper
4
+ # similar to Scala's `match` for case class
5
+ #
6
+ # will pattern match the value out and pass to matched lambda
7
+ # ```ruby
8
+ # Right.new(1).when({Right: ->x{x+1} }) # => 2
9
+ # Right.new(1).when({Left: ->x{x+1}) # => nil
10
+ # Right.new(1) =~ ({Left: ->x{x+1}, _: ->x{x-1} }) # => 0
11
+ # ```
12
+ # @return [Either]
13
+ def when what
14
+ current_class = self.class.to_s.to_sym
15
+ if what.include? current_class
16
+ what[current_class].(@v)
17
+ elsif what.include? :_
18
+ what[:_].(@v)
19
+ end
20
+ end
21
+
22
+ alias_names [:match, :=~], :when
23
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data.either
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jichao Ouyang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-23 00:00:00.000000000 Z
11
+ date: 2016-12-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: The Either Monad
13
+ description: lightweight data.either Monad
14
14
  email: oyanglulu@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -19,6 +19,7 @@ files:
19
19
  - lib/control/monad.rb
20
20
  - lib/data.either.rb
21
21
  - lib/helper.rb
22
+ - lib/union_type.rb
22
23
  homepage: https://github.com/jcouyang/cats.rb
23
24
  licenses:
24
25
  - MIT
@@ -31,7 +32,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: 1.9.0
35
+ version: 1.9.3
35
36
  required_rubygems_version: !ruby/object:Gem::Requirement
36
37
  requirements:
37
38
  - - ">="
@@ -42,5 +43,5 @@ rubyforge_project:
42
43
  rubygems_version: 2.4.5.1
43
44
  signing_key:
44
45
  specification_version: 4
45
- summary: Either Data Type for Ruby
46
+ summary: data.either Data Type for Ruby
46
47
  test_files: []