Sha256: 00ba261ee1bcd3f8f7cd29c2360f305a9e18281f0f03b5d42d934bc6bb2d7b24

Contents?: true

Size: 699 Bytes

Versions: 4

Compression:

Stored size: 699 Bytes

Contents

# frozen_string_literal: true

module Dry
  module Effects
    module Effects
      class Env < ::Module
        Read = Effect.new(type: :env, name: :read)

        def initialize(*args, **kwargs)
          super()

          readers = args.zip(args) + kwargs.to_a

          module_eval do
            if readers.empty?
              define_method(:env) do |key|
                ::Dry::Effects.yield(Read.(key))
              end
            else
              readers.each do |reader, key|
                define_method(reader) do
                  ::Dry::Effects.yield(Read.payload(key))
                end
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-effects-0.5.0 lib/dry/effects/effects/env.rb
dry-effects-0.4.1 lib/dry/effects/effects/env.rb
dry-effects-0.4.0 lib/dry/effects/effects/env.rb
dry-effects-0.3.1 lib/dry/effects/effects/env.rb