module Kind::ATTRIBUTES
Public Instance Methods
name!(name)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 10 def name!(name) STRICT.kind_of(::Symbol, name) end
value(kind, default, visibility = :private)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 14 def value(kind, default, visibility = :private) [kind, default, visibility] end
value!(kind, default)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 28 def value!(kind, default) return value(kind, default) unless kind.nil? raise Error.new("kind expected to not be nil") end
value_to_assign(kind, default, hash, name)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 18 def value_to_assign(kind, default, hash, name) raw_value = hash[name] return raw_value if kind.nil? && UNDEFINED == default value = resolve_value_to_assign(kind, default, raw_value) (kind.nil? || kind === value) ? value : nil end
value_to_assign!(kind, default, hash, name)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 34 def value_to_assign!(kind, default, hash, name) value = resolve_value_to_assign(kind, default, hash[name]) Kind.of(kind, value, label: name) end
Private Instance Methods
resolve_value_to_assign(kind, default, value)
click to toggle source
# File lib/kind/__lib__/attributes.rb, line 42 def resolve_value_to_assign(kind, default, value) if kind == ::Proc UNDEFINED == default ? value : KIND.value(kind, value, default) else default_is_a_callable = default.respond_to?(:call) default_value = if default_is_a_callable default_fn = Proc === default ? default : default.method(:call) default_fn.arity != 0 ? default_fn.call(value) : default_fn.call else default end return value if UNDEFINED == default_value return default_value || value if kind.nil? default_is_a_callable ? KIND.value(kind, default_value, value) : KIND.value(kind, value, default_value) end end