zx-result 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -0
  3. data/lib/zx/result.rb +14 -2
  4. data/lib/zx/version.rb +4 -2
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0256c3f98b2f2fa7a72ae9a3ab3e0db5700583c6275fa38b38b1111fb9c4f5f1
4
- data.tar.gz: 13a29cde376b2d95d3c75500b917c3caaede5a7dac1b9e9d56111e73b2706711
3
+ metadata.gz: da3bb02e36f9e8c958921f2ff44a76313d06b4f063ca7f9eaee5edd3eccf683d
4
+ data.tar.gz: 635a4e33852a269d3f03b8f80595bacec8a1b7cb8ac1c471bb11ed5443595442
5
5
  SHA512:
6
- metadata.gz: efd4d61b29da7587bd6bc408ccf113d2f61ba5d30c5708ac7957dc8da78e0b022bab2a61f5938d307efb77bbd25806f74dfa516b508762b2741a75167a082e3f
7
- data.tar.gz: 5630e13604ab28ad36cede46b812795b47994e35fdf34c350d407eca6981a77216a6fb3909afef13885ac58539f9986e95186b0de5bbfe73a68c9c553d88264e
6
+ metadata.gz: 3f8cf43b9abb8772b8436d297997321a677b7bee04ca3688ca1db4fa27dcfec79fa013bd176fc72864653f198b7d5e30c1b00265f291126ac2b97e72c4c7ec24
7
+ data.tar.gz: f090b620cac830f80e8037ade19f1dbcb83d629c87ee693b6618854de795a9ffb4297fcedd0bff4e11d6fe9268357554b54d0f70479a60d71cfc7e4a3fe2187a
data/README.md CHANGED
@@ -136,6 +136,44 @@ result.error #=> nil or raises an exception
136
136
  result.type #=> :integer
137
137
  ```
138
138
 
139
+ ### Step or Check
140
+
141
+ ```ruby
142
+ result = Zx.Success(5, type: :integer)
143
+ .step{ |number| number + 5 }
144
+ .on_success(:integer) {|number| puts number } #=> 10
145
+ .on(:success, :integer) {|number| puts number } #=> 10
146
+ .on_success {|number| puts number } #=> 10
147
+
148
+ result.success? #=> true
149
+ result.failure? #=> false
150
+ result.value #=> 10
151
+ result.value! #=> 10 or raise
152
+ result.error #=> nil or raises a n exception
153
+ result.type #=> :integer
154
+ ```
155
+
156
+ ```ruby
157
+ result = Zx.Success(5, type: :integer)
158
+ .step{ |number| number + 5 }
159
+ .check { |number| number == 10 }
160
+ .on_success{|number| puts number } #=> 10
161
+
162
+ result.success? #=> true
163
+ result.failure? #=> false
164
+ result.value #=> 10
165
+ result.value! #=> 10 or raise
166
+ result.error #=> nil or raises an exception
167
+ result.type #=> :integer
168
+ ```
169
+
170
+ ```ruby
171
+ result = Zx.Success(5, type: :integer)
172
+ .step{ |number| number + 5 }
173
+ .check { |number| number == 15 }
174
+ .on_failure{|error| puts error } #=> 10
175
+ ```
176
+
139
177
  You can use one or multiples listeners in your result. We see some use cases.
140
178
 
141
179
  **Simple composition**
data/lib/zx/result.rb CHANGED
@@ -39,6 +39,8 @@ module Zx
39
39
 
40
40
  def on_unknown(&block)
41
41
  __execute__(nil, &block)
42
+
43
+ self
42
44
  end
43
45
 
44
46
  def on_success(tag = nil, &block)
@@ -71,6 +73,10 @@ module Zx
71
73
  fmap(&block)
72
74
  end
73
75
 
76
+ def step(&block)
77
+ fmap(&block)
78
+ end
79
+
74
80
  def fmap(&block)
75
81
  return self if failure?
76
82
 
@@ -80,6 +86,12 @@ module Zx
80
86
  self
81
87
  end
82
88
 
89
+ def check(&block)
90
+ return self if !!block.call(@value)
91
+
92
+ failure!
93
+ end
94
+
83
95
  def failure!(value = nil, type: :error)
84
96
  @type = type.to_sym
85
97
  @success = false
@@ -106,7 +118,7 @@ module Zx
106
118
  def Success(value = nil, options = {})
107
119
  success!(value, type: options.fetch(:type, :ok))
108
120
  end
109
-
121
+
110
122
  def Success!(value = nil, options = {})
111
123
  success!(value, type: options.fetch(:type, :ok))
112
124
  end
@@ -114,7 +126,7 @@ module Zx
114
126
  def Failure(value = nil, options = {})
115
127
  failure!(value, type: options.fetch(:type, :error))
116
128
  end
117
-
129
+
118
130
  def Failure!(value = nil, options = {})
119
131
  failure!(value, type: options.fetch(:type, :error))
120
132
  end
data/lib/zx/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Zx
2
- VERSION = '0.0.1'.freeze
3
- end
4
+ VERSION = '0.0.3'
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zx-result
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thadeu Esteves
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-12 00:00:00.000000000 Z
11
+ date: 2023-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler