zx-result 0.0.1 → 0.0.3

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.
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