class T::Props::Private::ApplyDefault

Constants

NO_CLONE_TYPES

Attributes

setter_proc[R]

Public Class Methods

for(cls, rules) click to toggle source
# File lib/types/props/private/apply_default.rb, line 34
def self.for(cls, rules)
  accessor_key = rules.fetch(:accessor_key)
  setter = rules.fetch(:setter_proc)

  if rules.key?(:factory)
    ApplyDefaultFactory.new(cls, rules.fetch(:factory), accessor_key, setter)
  elsif rules.key?(:default)
    default = rules.fetch(:default)
    case default
    when *NO_CLONE_TYPES
      return ApplyPrimitiveDefault.new(default, accessor_key, setter)
    when String
      if default.frozen?
        return ApplyPrimitiveDefault.new(default, accessor_key, setter)
      end
    when Array
      if default.empty? && default.class == Array
        return ApplyEmptyArrayDefault.new(accessor_key, setter)
      end
    when Hash
      if default.empty? && default.default.nil? && T.unsafe(default).default_proc.nil? && default.class == Hash
        return ApplyEmptyHashDefault.new(accessor_key, setter)
      end
    end

    ApplyComplexDefault.new(default, accessor_key, setter)
  else
    nil
  end
end
new(accessor_key, setter_proc) click to toggle source
# File lib/types/props/private/apply_default.rb, line 17
def initialize(accessor_key, setter_proc)
  @accessor_key = T.let(accessor_key, Symbol)
  @setter_proc = T.let(setter_proc, SetterFactory::SetterProc)
end

Public Instance Methods

default() click to toggle source
# File lib/types/props/private/apply_default.rb, line 24
def default; end
set_default(instance) click to toggle source
# File lib/types/props/private/apply_default.rb, line 28
def set_default(instance); end