zx-monads 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: 21a3b0d8f2b0b4653a4c2c2e3bb1f955fef4525ade867543cf5100913b74bd83
4
- data.tar.gz: 7a4e852b48b0fec8b56e60ab734d6d1db25d355de04a99d345af326b94ac96a2
3
+ metadata.gz: e9acee35f37cd6cec08557b8ecf438ac66cda53c81737def1667d912ac916002
4
+ data.tar.gz: 7aa82e0795492ba409b8644a3013298af1d4003af0bf8004a71b35423711bf77
5
5
  SHA512:
6
- metadata.gz: 7b5cfdcd761036bfb7016e48e93a52405266afc45bbf96ea33a7149ba6f7873294079520e77aef9c3b9f0012c5ad0b2445eca1f69667137945a0bd8ba3d4577a
7
- data.tar.gz: fb94ac04e0f19b4f2c3a5e6520ec1e6a8d2e47b013b78076bfa45b7114902b48aba9ca8ddb47df5ddac6f501741d2cd5801348a1bb9f295d90eb350f43517e2f
6
+ metadata.gz: 869629640531acfc443af35b60a76e6696e6b10c2804de327d5054eae310244675f17e55e1964308909bd93c3960cc64cc5cd6ee9959d85c1b637eaed554424c
7
+ data.tar.gz: 850944a1da552252a4434a47ccfd3615733b23789d677a52303b4352f5a26656eaceaafd57ee1a6b396333c8a5f3179280fb3a1cc05d66b6f487286b4b5ca0d9
data/lib/zx/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zx
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
data/zx-monads.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.authors = ['Thadeu Esteves']
12
12
  spec.email = ['tadeuu@gmail.com']
13
13
  spec.summary = 'FP Monads for Ruby'
14
- spec.description = 'Use Either or Maybe to handle errors in your code'
14
+ spec.description = 'Use Maybe to handle errors in your code'
15
15
  spec.homepage = 'https://github.com/thadeu/zx-monads'
16
16
  spec.license = 'MIT'
17
17
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zx-monads
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thadeu Esteves
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.70'
69
- description: Use Either or Maybe to handle errors in your code
69
+ description: Use Maybe to handle errors in your code
70
70
  email:
71
71
  - tadeuu@gmail.com
72
72
  executables: []
@@ -85,10 +85,8 @@ files:
85
85
  - Rakefile
86
86
  - bin/console
87
87
  - bin/setup
88
- - lib/either.rb
89
88
  - lib/maybe.rb
90
89
  - lib/zx.rb
91
- - lib/zx/either.rb
92
90
  - lib/zx/maybe.rb
93
91
  - lib/zx/steps.rb
94
92
  - lib/zx/version.rb
data/lib/either.rb DELETED
@@ -1,80 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Either
4
- class ArgumentError < ArgumentError
5
- end
6
-
7
- class ValueError < ArgumentError
8
- end
9
-
10
- def self.[](...)
11
- new(...)
12
- end
13
-
14
- def success?
15
- raise NotImplementedError
16
- end
17
-
18
- def failure?
19
- !success?
20
- end
21
-
22
- def value!
23
- @value || raise(ValueError, 'value is empty')
24
- end
25
-
26
- def on_success(&block)
27
- return self if failure?
28
-
29
- block.call(@value)
30
-
31
- self
32
- end
33
-
34
- def on_failure(&block)
35
- return self if success?
36
-
37
- block.call(@value)
38
-
39
- self
40
- end
41
-
42
- def match(right:, left:)
43
- case self
44
- in Right then right.call(@value)
45
- else left.call(@error)
46
- end
47
- end
48
-
49
- class Left < Either
50
- attr_reader :error
51
-
52
- def initialize(error)
53
- @error = error
54
- end
55
-
56
- def deconstruct
57
- [@error]
58
- end
59
-
60
- def success?
61
- false
62
- end
63
- end
64
-
65
- class Right < Either
66
- attr_reader :value
67
-
68
- def initialize(value)
69
- @value = value
70
- end
71
-
72
- def deconstruct
73
- [@value]
74
- end
75
-
76
- def success?
77
- true
78
- end
79
- end
80
- end
data/lib/zx/either.rb DELETED
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
- module Zx
3
- module Either
4
- module Eitherable
5
- Left = ->(*kwargs) { ::Either::Left.new(*kwargs) }
6
- Right = ->(*kwargs) { ::Either::Right.new(*kwargs) }
7
-
8
- def Right(*kwargs)
9
- ::Either::Right.new(*kwargs)
10
- end
11
-
12
- def Left(*kwargs)
13
- ::Either::Left.new(*kwargs)
14
- end
15
-
16
- def Try(default = nil, options = {})
17
- Right yield
18
- rescue StandardError => e
19
- Left default || options.fetch(:or, nil)
20
- end
21
- end
22
-
23
- def self.included(klass)
24
- klass.include(Eitherable)
25
- end
26
- end
27
-
28
- include Either
29
- end