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