Sha256: 0ed8b528392c8122791babd871e555cf99d2fe7156cc6caae01a55d0d2721fb8

Contents?: true

Size: 523 Bytes

Versions: 4

Compression:

Stored size: 523 Bytes

Contents

# frozen_string_literal: true

require "concurrent/map"

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

4 entries across 4 versions & 1 rubygems

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