Last active
December 4, 2020 13:04
-
-
Save serradura/09268ddf5ef4e4f9166b46e611edc90c to your computer and use it in GitHub Desktop.
u-case - v2.6: examples of how to use the then method
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'bundler/inline' | |
gemfile do | |
source 'https://rubygems.org' | |
gem 'u-case', '~> 2.6.0' | |
end | |
class Add3 < Micro::Case | |
attributes :number | |
def call! | |
number.is_a?(Numeric) ? Success(number: number + 3) : Failure() | |
end | |
end | |
class Add1IfWasAnEvenNumber < Micro::Case | |
attributes :number | |
def call! | |
return Success(number: number + 1) if number.is_a?(Numeric) && number.even? | |
Failure() | |
end | |
end | |
Add3 | |
.call(number: 1) | |
.then(Add1IfWasAnEvenNumber) | |
.on_success { |data| p data[:number] } | |
.on_failure { |result| puts "the attribute number must be numeric" } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'bundler/inline' | |
gemfile do | |
source 'https://rubygems.org' | |
gem 'u-case', '~> 2.6.0' | |
end | |
class Add3 < Micro::Case | |
attributes :number | |
def call! | |
number.is_a?(Numeric) ? Success(number: number + 3) : Failure() | |
end | |
end | |
class Add1 < Micro::Case | |
attributes :number | |
def call! | |
number.is_a?(Numeric) ? Success(number: number + 1) : Failure() | |
end | |
end | |
module AddN | |
def self.call(input) | |
result = Add3.call(input).on_failure { |result| return result } | |
result.value[:number].even? ? result.then(Add1) : result | |
end | |
end | |
AddN | |
.call(number: 1) | |
.on_success { |data| p data[:number] } | |
.on_failure { |result| puts "the attribute number must be numeric" } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'bundler/inline' | |
gemfile do | |
source 'https://rubygems.org' | |
gem 'u-case', '~> 2.6.0' | |
end | |
class Add3 < Micro::Case | |
attributes :number | |
def call! | |
number.is_a?(Numeric) ? Success(number: number + 3) : Failure() | |
end | |
end | |
module AddN | |
class Add1 < Micro::Case | |
attributes :number | |
def call! | |
number.is_a?(Numeric) ? Success(number: number + 1) : Failure() | |
end | |
end | |
def self.call(input) | |
result = Add3.call(input).on_failure { |result| return result } | |
result.value[:number].even? ? result.then(Add1) : result | |
end | |
end | |
AddN | |
.call(number: 1) | |
.on_success { |data| p data[:number] } | |
.on_failure { |result| puts "the attribute number must be numeric" } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment