Skip to content

Instantly share code, notes, and snippets.

@serradura
Last active December 4, 2020 13:04
Show Gist options
  • Save serradura/09268ddf5ef4e4f9166b46e611edc90c to your computer and use it in GitHub Desktop.
Save serradura/09268ddf5ef4e4f9166b46e611edc90c to your computer and use it in GitHub Desktop.
u-case - v2.6: examples of how to use the then method
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" }
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" }
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