Sha256: ea39b9aa0bf892eba3c97a5fa629115801529695d661a3b5e66da191447f4484

Contents?: true

Size: 590 Bytes

Versions: 2

Compression:

Stored size: 590 Bytes

Contents

# frozen_string_literal: true

require 'dry/effects/provider'

module Dry
  module Effects
    module Providers
      class Amb < Provider[:amb]
        include Dry::Equalizer(:id, :value)

        attr_reader :value

        param :id

        def get
          value
        end

        def call(_)
          @value = false
          first = yield
          @value = true
          [first, yield]
        end

        def provide?(effect)
          super && id.equal?(effect.id)
        end

        def represent
          "amb[#{id}=#{@value}]"
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dry-effects-0.1.0.alpha2 lib/dry/effects/providers/amb.rb
dry-effects-0.1.0.alpha lib/dry/effects/providers/amb.rb