Sha256: a180f9181762810ac3eb89ff6c33a9e41e5d0e0b59b7cf715d96e607df95fdfb

Contents?: true

Size: 667 Bytes

Versions: 4

Compression:

Stored size: 667 Bytes

Contents

# frozen_string_literal: true

module Dry
  module Effects
    class Handler
      attr_reader :provider

      attr_reader :frame

      def initialize(type, *args)
        @provider = ::Dry::Effects.providers[type].new(*args)
        @frame = Frame.new(provider)
      end

      if RUBY_VERSION >= '2.7'
        class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def call(...)
            frame.(...)
          end
        RUBY
      else
        def call(*args, &block)
          frame.(*args, &block)
        end
      end

      def to_s
        "#<Dry::Effects::Handler #{provider.represent}>"
      end
      alias_method :inspect, :to_s
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-effects-0.1.5 lib/dry/effects/handler.rb
dry-effects-0.1.4 lib/dry/effects/handler.rb
dry-effects-0.1.3 lib/dry/effects/handler.rb
dry-effects-0.1.2 lib/dry/effects/handler.rb