def argument_value
return @argument_value if forced
type = @argument_type.to_s.downcase
return count if type == 'count'
value = @argument_value || @options[:default]
return if value.nil?
if @argument_type.respond_to?(:call)
@argument_type.call(value)
else
case type
when 'array'
arg_value(@argument_value)
when 'range'
arg_value(value_to_range(value))
when 'float'
arg_value(value.to_s.to_f)
when 'string', 'str'
arg_value(value.to_s)
when 'symbol', 'sym'
arg_value(value.to_s.to_sym)
when 'integer', 'int'
arg_value(value.to_s.to_i)
else
value
end
end
end