zx-result 0.0.1 → 0.0.2

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