class SmartCore::Initializer::Attribute::Parameters

@api private @since 0.1.0

Constants

DEFAULT_AS

@return [NilClass]

@api private @since 0.4.0

DEFAULT_CAST_BEHAVIOUR

@return [Boolean]

@api private @since 0.1.0

DEFAULT_DYNAMIC_OPTIONS

@return [Hash]

@api private @since 0.1.0

DEFAULT_FINALIZER

@return [Proc]

@api private @since 0.1.0

DEFAULT_PRIVACY_MODE

@return [Symbol]

@api private @since 0.1.0

DEFAULT_READ_ONLY

@return [Boolean]

@api private @since 0.4.0

PRIVACY_MODES

@return [Hash<Symbol,Symbol>]

@api private @since 0.1.0

Attributes

as[R]

@return [String, Symbol, NilClass]

@api private @since 0.4.0

cast[R]

@return [Boolean]

@api private @since 0.1.0

cast?[R]

@return [Boolean]

@api private @since 0.1.0

dynamic_options[R]

@return [Hash<Symbol,Any>]

@api private @since 0.1.0

finalizer[R]

@return [SmartCore::Initializer::Attribute::Finalizer::AnonymousBlock] @return [SmartCore::Initializer::Attribute::Finalizer::InstanceMethod]

@api private @since 0.1.0

name[R]

@return [Symbol]

@api private @since 0.1.0

privacy[R]

@return [Symbol]

@api private @since 0.1.0

read_only[R]

@return [Boolean]

@api private @since 0.4.0

type[R]

@return [SmartCore::Initializer::TypeSystem::Interop]

@api private @since 0.1.0

type_system[R]

@return [Class<SmartCore::Initilizer::TypeSystem::Interop>]

@api private @since 0.1.0

Public Class Methods

new(name, type, type_system, privacy, finalizer, cast, read_only, as, dynamic_options) click to toggle source

@param name [Symbol] @param type [SmartCore::Initializer::TypeSystem::Interop] @param type_system [Class<SmartCore::Initializer::TypeSystem::Interop>] @param privacy [Symbol] @param finalizer [SmartCore::Initializer::Attribute::AnonymousBlock/InstanceMethod] @param cast [Boolean] @param read_only [Boolean] @param as [NilClass, Symbol, String] @param dynamic_options [Hash<Symbol,Any>]

- :default - default value (Proc value will be called)

@return [void]

@api private @since 0.1.0 @version 0.4.0

# File lib/smart_core/initializer/attribute/parameters.rb, line 123
def initialize(name, type, type_system, privacy, finalizer, cast, read_only, as, dynamic_options)
  @name = name
  @type = type
  @type_system = type_system
  @privacy = privacy
  @finalizer = finalizer
  @cast = cast
  @read_only = read_only
  @as = as
  @dynamic_options = dynamic_options
end

Public Instance Methods

default() click to toggle source

@return [Any]

@raise [SmartCore::Initializer::NoDefaultValueError]

@api private @since 0.1.0

# File lib/smart_core/initializer/attribute/parameters.rb, line 149
  def default
    default_value = dynamic_options.fetch(:default) do
      raise(SmartCore::Initializer::NoDefaultValueError, <<~ERROR_MESSAGE)
        Attribute #{name} has no default value
      ERROR_MESSAGE
    end

    default_value.is_a?(Proc) ? default_value.call : default_value
  end
has_default?() click to toggle source

@return [Boolean]

@api private @since 0.1.0

# File lib/smart_core/initializer/attribute/parameters.rb, line 139
def has_default?
  dynamic_options.key?(:default)
end