Sha256: 9ddc6820f988e913e0052a4cd1bec812993f646be0d37a6d8686cc879e8be55f
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
# frozen_string_literal: true require "dry/transaction/callable" module Dry module Transaction # @api private class StepAdapter def self.[](adapter, operation, options) if adapter.is_a?(self) adapter.with(operation, options) else new(adapter, operation, options) end end attr_reader :adapter attr_reader :operation attr_reader :options def initialize(adapter, operation, options) @adapter = case adapter when Proc, Method adapter else adapter.method(:call) end @operation = Callable[operation] @options = options @yields = @adapter .parameters .any? { |type, _| type == :block } end def yields? @yields end def call(args, &block) adapter.(operation, options, args, &block) end def with(operation = self.operation, new_options = {}) self.class.new(adapter, operation, options.merge(new_options)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-transaction-0.16.0 | lib/dry/transaction/step_adapter.rb |
dry-transaction-0.15.0 | lib/dry/transaction/step_adapter.rb |