Sha256: 24960024cb9c2e496a41046b66b123133a422c9debc4eb4d4763471f06b8cc6c
Contents?: true
Size: 506 Bytes
Versions: 11
Compression:
Stored size: 506 Bytes
Contents
# frozen_string_literal: true module Pipeable module Steps # Validates result via a callable contract. class Validate < Abstract def initialize contract, as: nil super() @contract = contract @as = as end def call(result) = result.bind { |payload| cast payload } private attr_reader :contract, :as def cast payload contract.call(payload).to_monad.fmap { |data| as ? data.public_send(as) : data } end end end end
Version data entries
11 entries across 11 versions & 1 rubygems