1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
module Virtus
class Attribute
# Class representing the default value option
#
# @api private
class DefaultValue
extend DescendantsTracker
include Equalizer.new(inspect) << :value
# Builds a default value instance
#
# @return [Virtus::Attribute::DefaultValue]
#
# @api private
def self.build(*args)
klass = descendants.detect { |descendant| descendant.handle?(*args) } || self
klass.new(*args)
end
# Returns the value instance
#
# @return [Object]
#
# @api private
attr_reader :value
# Initializes an default value instance
#
# @param [Object] value
#
# @return [undefined]
#
# @api private
def initialize(value)
@value = value
end
# Evaluates the value
#
# @return [Object] evaluated value
#
# @api private
def call(*)
value
end
end # class DefaultValue
end # class Attribute
end # module Virtus
|