class SmartCore::Validator::InstanceBuilder
Attributes
@return [Array<Any>]
@api private @since 0.2.0
@return [Proc]
@api private @since 0.2.0
@return [Hash<Symbol,Any>]
@api private @since 0.2.0
@return [Class<SmartCore::Validator>]
@api private @since 0.2.0
@return [SmartCore::Validator]
@api private @since 0.2.0
Public Class Methods
@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
@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
@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
@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
@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
@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