module RedisHash::Default

Public Instance Methods

default(field = nil) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 51
def default(field = nil)
  to_default(field, allow_nil_field: false)
end
default=(value) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 39
def default=(value)
  @default = value
  @default_proc = nil
end
default_proc=(value) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 44
def default_proc=(value)
  validate_proc(value) unless value.nil?

  @default = nil
  @default_proc = value
end
initialize_default(default, &block) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 13
def initialize_default(default, &block)
  raise ArgumentError, "cannot specify both block and static default" if block_given? && default.present?

  set_default(default, &block)
end
set_default(default, &block) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 19
def set_default(default, &block)
  self.default = default if default.present?
  self.default_proc = block if block_given?
end
to_default(field = nil, allow_nil_field: true) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 24
def to_default(field = nil, allow_nil_field: true)
  @default.presence || (default_proc&.call(self, field) if !field.nil? || allow_nil_field)
end
validate_lambda_arity(arity) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 34
def validate_lambda_arity(arity)
  raise TypeError, "default_proc takes two arguments (2 for #{arity})" if arity >= 0 && arity != 2
end
validate_proc(proc) click to toggle source
# File lib/redis_hash/concerns/default.rb, line 28
def validate_proc(proc)
  raise TypeError, "wrong default_proc type #{proc.class.name} (expected Proc)" unless proc.is_a? Proc

  validate_lambda_arity(proc.arity) if proc.lambda?
end