Sha256: 3e6a2a5f89c2e433933eb5e7f7a0e5529255c226b8d9f9d44774f446524f41d4
Contents?: true
Size: 785 Bytes
Versions: 12
Compression:
Stored size: 785 Bytes
Contents
# frozen_string_literal: true require "marameters" module Pipeable module Steps # Checks if proof is true and answers success (passthrough) or failure (with optional argument). class Check < Abstract def initialize proof, message super() @proof = proof @message = message end def call result result.bind do |object| answer = question object answer == true || answer.is_a?(Success) ? result : Failure(object) end end private attr_reader :proof, :message def question object splat = Marameters.categorize proof.method(message).parameters, object proof.public_send(message, *splat.positionals, **splat.keywords, &splat.block) end end end end
Version data entries
12 entries across 12 versions & 1 rubygems