Sha256: f30b7624f14f14e0522e2bb517260f99642cfe8c5429e7c6e88d94866f21fa71

Contents?: true

Size: 939 Bytes

Versions: 18

Compression:

Stored size: 939 Bytes

Contents

# frozen_string_literal: true

require "concurrent/map"

module Hanami
  module Utils
    module ClassAttribute
      # Class attributes set
      #
      # @since 2.0.0
      # @api private
      class Attributes
        # @since 2.0.0
        # @api private
        def initialize(attributes: Concurrent::Map.new)
          @attributes = attributes
        end

        # @since 2.0.0
        # @api private
        def []=(key, value)
          @attributes[key.to_sym] = value
        end

        # @since 2.0.0
        # @api private
        def [](key)
          @attributes.fetch(key, nil)
        end

        # @since 2.0.0
        # @api private
        def dup
          attributes = Concurrent::Map.new.tap do |attrs|
            @attributes.each do |key, value|
              attrs[key.to_sym] = value.dup
            end
          end

          self.class.new(attributes: attributes)
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
hanami-utils-2.2.0 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.2.0.rc1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.2.0.beta2 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.2.0.beta1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.1.0 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.1.0.rc3 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.1.0.rc2 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.1.0.beta1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.3 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.2 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.rc1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.beta1 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.alpha6 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.alpha3 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.alpha2 lib/hanami/utils/class_attribute/attributes.rb
hanami-utils-2.0.0.alpha1 lib/hanami/utils/class_attribute/attributes.rb