class SmartCore::Initializer::AttributeSet

@api private @since 0.5.0

Attributes

attributes[R]

@return [Hash<Symbol, SmartCore::Initializer::Attribute>]

@api private @since 0.5.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 19
def initialize
  @attributes = {}
  @access_lock = Mutex.new
end

Public Instance Methods

<<(attribute)
Alias for: add_attribute
add_attribute(attribute) click to toggle source

@param attribute [SmartCore::Initializer::Attribute] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 29
def add_attribute(attribute)
  thread_safe { attributes[attribute.name] = attribute }
end
Also aliased as: <<
concat(attribute_set) click to toggle source

@param attribute_set [SmartCore::Initializer::AttributeSet] @return [void]

@api private @sinec 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 39
def concat(attribute_set)
  thread_safe { attributes.merge!(attribute_set.dup.attributes) }
end
conflicts_with?(attribute) click to toggle source

@param attribute [SmartCore::Initializer::Attribute] @return [Boolean]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 48
def conflicts_with?(attribute)
  thread_safe { attributes.key?(attribute.name) }
end
dup() click to toggle source

@return [SmartCore::Initializer::AttributeSet]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 56
def dup
  thread_safe do
    self.class.new.tap do |duplicate|
      attributes.each_value do |attribute|
        duplicate.add_attribute(attribute.dup)
      end
    end
  end
end
each(&block) click to toggle source

@return [Enumerable]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 78
def each(&block)
  thread_safe { block_given? ? attributes.each_value(&block) : attributes.each_value }
end
size() click to toggle source

@return [Integer]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 70
def size
  thread_safe { attributes.size }
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Proc] @return [Any]

@api private @since 0.5.0

# File lib/smart_core/initializer/attribute_set.rb, line 89
def thread_safe(&block)
  @access_lock.synchronize(&block)
end