Sha256: 980dbc50423b655b17de685d18848c4eda39c9d08b5bcb84dbee2f2a830512da

Contents?: true

Size: 555 Bytes

Versions: 1

Compression:

Stored size: 555 Bytes

Contents

# frozen_string_literal: true

require "concurrent/map"
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

1 entries across 1 versions & 1 rubygems

Version Path
dry-effects-0.3.0 lib/dry/effects/halt.rb