Sha256: 9d42733db5f563c7245aea324a85ece2269bac5fe7ba1adf86ebaf152e6b4696

Contents?: true

Size: 591 Bytes

Versions: 8

Compression:

Stored size: 591 Bytes

Contents

# frozen_string_literal: true

require 'concurrent/map'
require 'dry/core/class_attributes'
require 'dry/effects/inflector'

module Dry
  module Effects
    class Halt < StandardError
      extend Core::ClassAttributes

      @constants = ::Concurrent::Map.new

      def self.[](key)
        @constants.fetch_or_store(key) do
          klass = ::Class.new(Halt)
          const_set(Inflector.camelize(key), klass)
        end
      end

      attr_reader :payload

      def initialize(payload = Undefined)
        super(EMPTY_STRING)
        @payload = payload
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dry-effects-0.1.5 lib/dry/effects/halt.rb
dry-effects-0.1.4 lib/dry/effects/halt.rb
dry-effects-0.1.3 lib/dry/effects/halt.rb
dry-effects-0.1.2 lib/dry/effects/halt.rb
dry-effects-0.1.1 lib/dry/effects/halt.rb
dry-effects-0.1.0 lib/dry/effects/halt.rb
dry-effects-0.1.0.alpha2 lib/dry/effects/halt.rb
dry-effects-0.1.0.alpha lib/dry/effects/halt.rb