class SmartCore::Validator::InstanceBuilder

Attributes

arguments[R]

@return [Array<Any>]

@api private @since 0.2.0

block[R]

@return [Proc]

@api private @since 0.2.0

options[R]

@return [Hash<Symbol,Any>]

@api private @since 0.2.0

validator_klass[R]

@return [Class<SmartCore::Validator>]

@api private @since 0.2.0

validator_object[R]

@return [SmartCore::Validator]

@api private @since 0.2.0

Public Class Methods

call(validator_object, validator_klass, arguments, options, block) click to toggle source

@param validator_object [SmartCore::Validator] @param validator_klass [Class<SmartCore::Validator>] @param arguments [Array<Any>] @param options [Hash<Symbol,Any>] @param block [Proc] @return [SmartCore::Validator]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 17
def call(validator_object, validator_klass, arguments, options, block)
  new(validator_object, validator_klass, arguments, options, block).call
end
new(validator_object, validator_klass, arguments, options, block) click to toggle source

@param validator_object [SmartCore::Validator] @param validator_klass [Class<SmartCore::Validator>] @param arguments [Array<Any>] @param options [Hash<Symbol,Any>] @param block [Proc] @return [void]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 31
def initialize(validator_object, validator_klass, arguments, options, block)
  @validator_object = validator_object
  @validator_klass = validator_klass
  @arguments = arguments
  @options = options
  @block = block
end

Public Instance Methods

call() click to toggle source

@return [SmartCore::Validator]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 43
def call
  validator_object.tap do
    initialize_core_attributes
    initialize_custom_attributes
    invoke_original_methods
  end
end

Private Instance Methods

initialize_core_attributes() click to toggle source

@return [void]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 87
def initialize_core_attributes
  validator_object.instance_variable_set(:@__validation_errors__, ErrorSet.new)
  validator_object.instance_variable_set(:@__invokation_lock__, Mutex.new)
  validator_object.instance_variable_set(:@__access_lock__, Mutex.new)
end
initialize_custom_attributes() click to toggle source

@return [void]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 97
def initialize_custom_attributes
  validator_klass.attributes.each do |attribute|
    attribute_name  = attribute.name
    attribute_value = options.fetch(attribute_name) { attribute.default_value }

    validator_object.instance_variable_set("@#{attribute_name}", attribute_value)
  end
end
invoke_original_methods() click to toggle source

@return [void]

@api private @since 0.2.0

# File lib/smart_core/validator/instance_builder.rb, line 110
def invoke_original_methods
  validator_object.send(:initialize, *arguments, **options, &block)
end