Sha256: ceeee27a83987be38c7019a0770cf48b3a837e57887e544c4da9a519eafdfaa0

Contents?: true

Size: 591 Bytes

Versions: 1

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

1 entries across 1 versions & 1 rubygems

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