class SmartCore::Validator::AttributeSet

@api private @since 0.1.0

Attributes

attributes[R]

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

@api private @since 0.1.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.1.0

# File lib/smart_core/validator/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::Validator::Attribute] @return [void]

@api private @since 0.1.0

# File lib/smart_core/validator/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::Validator::AttributeSet] @return [void]

@api private @sinec 0.1.0

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

@return [SmartCore::Validator::AttributeSet]

@api private @since 0.1.0

# File lib/smart_core/validator/attribute_set.rb, line 47
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.1.0

# File lib/smart_core/validator/attribute_set.rb, line 61
def each(&block)
  thread_safe { block_given? ? attributes.each_value(&block) : attributes.each_value }
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Proc] @return [Any]

@api private @since 0.1.0

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