class SmartCore::Initializer::Attribute
@api private @since 0.5.0
@api private @since 0.5.0
Constants
- PRIVACY_MODES
@return [Hash<Symbol,Symbol>]
@api private @since 0.5.0
Attributes
@return [SmartCore::Initializer::Attribute::ValueFinalizer::Lambda] @return [SmartCore::Initializer::Attribute::ValueFinalizer::Method]
@api private @since 0.5.0
@return [Symbol]
@api private @since 0.5.0
@return [Hash<Symbol,Any>]
@api private @since 0.5.0
@return [Symbol]
@api private @since 0.5.0
@return [String, Symbol]
@api private @since 0.5.0
Public Class Methods
@param name [String, Symbol] @param type [Symbol] (see SmartCore::Initializer::TypeSet
, SmartCore::Initializer::Type
) @param privacy [Symbol @param finalizer [SmartCore::Initializer::Attribute::ValueFinalizer::Lambda/Method] @param options [HAsh<Symbol,Any>] Supported options:
- :default [Proc] see #default_value
@return [void]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 61 def initialize(name, type, privacy, finalizer, **options) @name = name @type = type @privacy = privacy @finalizer = finalizer @options = options end
Public Instance Methods
@return [Any]
@raise [SmartCore::Initializer::ArgumentError]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 98 def default_value default_value = options.fetch(:default) do raise(SmartCore::Initializer::ArgumentError, 'Default value is not provided.') end default_value.is_a?(Proc) ? default_value.call : default_value end
@return [SmartCore::Intializer::Attribute]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 120 def dup self.class.new(name, type, privacy, finalizer, **options) end
@param value [Any] @param instance [Any] @return [Any]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 112 def finalize(value, instance) finalizer.finalize(value, instance) end
@return [Boolean]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 73 def has_default_value? options.key?(:default) end
@param value [Any] @return [void]
@api private @since 0.5.0
# File lib/smart_core/initializer/attribute.rb, line 82 def validate_value_type!(value) type_checker = SmartCore::Initializer.get_type(type) raise( SmartCore::Initializer::ArgumentError, "Incorrect type of <#{name}> attribute " \ "(given: #{value.class}, expected: :#{type_checker.name})" ) unless type_checker.comparable?(value) end