zx-result 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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -0
  3. data/lib/zx/result.rb +12 -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: 477e097fbbd8ef0e9653cad235ba58be00f9fc2d3caf59d753cda5f356288841
4
+ data.tar.gz: de38c568f3b038e4a58fa653170ca32b651ba721c92146045dd8303de312a94c
5
5
  SHA512:
6
- metadata.gz: efd4d61b29da7587bd6bc408ccf113d2f61ba5d30c5708ac7957dc8da78e0b022bab2a61f5938d307efb77bbd25806f74dfa516b508762b2741a75167a082e3f
7
- data.tar.gz: 5630e13604ab28ad36cede46b812795b47994e35fdf34c350d407eca6981a77216a6fb3909afef13885ac58539f9986e95186b0de5bbfe73a68c9c553d88264e
6
+ metadata.gz: 8392ba2d654e02899d5c1d5022af1287648244145c16f3fd875e2064c41442d31a637b95dac71929d1b474f080e264cadb030920a2c25a9a4a192d586310adb5
7
+ data.tar.gz: 6c0e807a40f795cf8be7d3721e0f7bab7cda05a2d5456ec67dbe880a9deaa4a6d82b13fac26453e1f1d243b6a5366e380f8aa51e735659d3d2ab7d6b458a2e78
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
@@ -71,6 +71,10 @@ module Zx
71
71
  fmap(&block)
72
72
  end
73
73
 
74
+ def step(&block)
75
+ fmap(&block)
76
+ end
77
+
74
78
  def fmap(&block)
75
79
  return self if failure?
76
80
 
@@ -80,6 +84,12 @@ module Zx
80
84
  self
81
85
  end
82
86
 
87
+ def check(&block)
88
+ return self if !!block.call(@value)
89
+
90
+ failure!
91
+ end
92
+
83
93
  def failure!(value = nil, type: :error)
84
94
  @type = type.to_sym
85
95
  @success = false
@@ -106,7 +116,7 @@ module Zx
106
116
  def Success(value = nil, options = {})
107
117
  success!(value, type: options.fetch(:type, :ok))
108
118
  end
109
-
119
+
110
120
  def Success!(value = nil, options = {})
111
121
  success!(value, type: options.fetch(:type, :ok))
112
122
  end
@@ -114,7 +124,7 @@ module Zx
114
124
  def Failure(value = nil, options = {})
115
125
  failure!(value, type: options.fetch(:type, :error))
116
126
  end
117
-
127
+
118
128
  def Failure!(value = nil, options = {})
119
129
  failure!(value, type: options.fetch(:type, :error))
120
130
  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.2'
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.2
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-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler