Class: Virtus::Coercion::String

Inherits:
Object show all
Defined in:
lib/virtus/coercion/string.rb

Overview

Coerce String values

Constant Summary collapse

TRUE_VALUES =
%w[ 1 t true  ].freeze
FALSE_VALUES =
%w[ 0 f false ].freeze
BOOLEAN_MAP =
::Hash[ TRUE_VALUES.product([ true ]) + FALSE_VALUES.product([ false ]) ].freeze
NUMERIC_REGEXP =
/\A(-?(?:0|[1-9]\d*)(?:\.\d+)?|(?:\.\d+))\z/.freeze

Constants inherited from Object

Object::COERCION_METHOD_REGEXP

Constants included from TypeLookup

TypeLookup::TYPE_FORMAT

Class Method Summary collapse

Methods inherited from Object

method_missing

Methods inherited from Virtus::Coercion

[]

Methods included from DescendantsTracker

#add_descendant, #descendants

Methods included from TypeLookup

#determine_type, #primitive

Methods included from Options

#accept_options, #accepted_options, #options

Class Method Details

.to_boolean(value) ⇒ Boolean

Coerce value to TrueClass or FalseClass

Examples:

with “T”

Virtus::Coercion::String.to_boolean('T')  # => true

with “F”

Virtus::Coercion::String.to_boolean('F')  # => false

Parameters:

  • (#to_s)

Returns:

  • (Boolean)


84
85
86
# File 'lib/virtus/coercion/string.rb', line 84

def self.to_boolean(value)
  BOOLEAN_MAP.fetch(value.downcase, value)
end

.to_constant(value) ⇒ Object

Coerce give value to a constant

Examples:

Virtus::Coercion::String.to_constant('String') # => String

Parameters:

Returns:



24
25
26
27
# File 'lib/virtus/coercion/string.rb', line 24

def self.to_constant(value)
  # TODO: add support for namespaced classes like 'Virtus::Attribute::String'
  ::Object.const_get(value)
end

.to_date(value) ⇒ Date

Coerce given value to Date

Examples:

Virtus::Coercion::String.to_date(string)  # => Date object

Parameters:

Returns:



53
54
55
# File 'lib/virtus/coercion/string.rb', line 53

def self.to_date(value)
  parse_value(::Date, value)
end

.to_datetime(value) ⇒ DateTime

Coerce given value to DateTime

Examples:

Virtus::Coercion::String.to_datetime(string)  # => DateTime object

Parameters:

Returns:



67
68
69
# File 'lib/virtus/coercion/string.rb', line 67

def self.to_datetime(value)
  parse_value(::DateTime, value)
end

.to_decimal(value) ⇒ BigDecimal

Coerce value to decimal

Examples:

Virtus::Coercion::String.to_decimal('1.2')  # => #<BigDecimal:b72157d4,'0.12E1',8(8)>

Parameters:

Returns:

  • (BigDecimal)


126
127
128
# File 'lib/virtus/coercion/string.rb', line 126

def self.to_decimal(value)
  to_numeric(value, :to_d)
end

.to_float(value) ⇒ Float

Coerce value to float

Examples:

Virtus::Coercion::String.to_float('1.2')  # => 1.2

Parameters:

Returns:



112
113
114
# File 'lib/virtus/coercion/string.rb', line 112

def self.to_float(value)
  to_numeric(value, :to_f)
end

.to_integer(value) ⇒ Integer

Coerce value to integer

Examples:

Virtus::Coercion::String.to_integer('1')  # => 1

Parameters:

Returns:



98
99
100
# File 'lib/virtus/coercion/string.rb', line 98

def self.to_integer(value)
  to_numeric(value, :to_i)
end

.to_time(value) ⇒ Time

Coerce given value to Time

Examples:

Virtus::Coercion::String.to_time(string)  # => Time object

Parameters:

Returns:



39
40
41
# File 'lib/virtus/coercion/string.rb', line 39

def self.to_time(value)
  parse_value(::Time, value)
end