Class: Virtus::Coercion::String
- Inherits:
-
Object
- Object
- Virtus::Coercion
- Object
- Virtus::Coercion::String
- Defined in:
- lib/virtus/coercion/string.rb
Overview
Coerce String values
Constant Summary collapse
- TRUE_VALUES =
%w[ 1 on t true y yes ].freeze
- FALSE_VALUES =
%w[ 0 off f false n no ].freeze
- BOOLEAN_MAP =
::Hash[ TRUE_VALUES.product([ true ]) + FALSE_VALUES.product([ false ]) ].freeze
- INTEGER_REGEXP =
/[-+]?(?:[0-9]\d*)/.freeze
- EXPONENT_REGEXP =
/(?:[eE][-+]?\d+)/.freeze
- FRACTIONAL_REGEXP =
/(?:\.\d+)/.freeze
- NUMERIC_REGEXP =
/\A( #{INTEGER_REGEXP}#{FRACTIONAL_REGEXP}?#{EXPONENT_REGEXP}? | #{FRACTIONAL_REGEXP}#{EXPONENT_REGEXP}? )\z/x.freeze
Constants inherited from Object
Object::COERCION_METHOD_REGEXP
Constants included from TypeLookup
Class Method Summary collapse
-
.to_boolean(value) ⇒ Boolean
Coerce value to TrueClass or FalseClass.
-
.to_constant(value) ⇒ Object
Coerce give value to a constant.
-
.to_date(value) ⇒ Date
Coerce given value to Date.
-
.to_datetime(value) ⇒ DateTime
Coerce given value to DateTime.
-
.to_decimal(value) ⇒ BigDecimal
Coerce value to decimal.
-
.to_float(value) ⇒ Float
Coerce value to float.
-
.to_integer(value) ⇒ Integer
Coerce value to integer.
-
.to_symbol(value) ⇒ Symbol
Coerce give value to a symbol.
-
.to_time(value) ⇒ Time
Coerce given value to Time.
Methods inherited from Object
Methods inherited from Virtus::Coercion
Methods included from TypeLookup
#determine_type, extended, #primitive
Methods included from Options
#accept_options, #accepted_options, #options
Class Method Details
.to_boolean(value) ⇒ Boolean
Coerce value to TrueClass or FalseClass
125 126 127 |
# File 'lib/virtus/coercion/string.rb', line 125 def self.to_boolean(value) BOOLEAN_MAP.fetch(value.downcase, value) end |
.to_constant(value) ⇒ Object
Coerce give value to a constant
31 32 33 34 35 |
# File 'lib/virtus/coercion/string.rb', line 31 def self.to_constant(value) names = value.split('::') names.shift if names.first.empty? names.inject(::Object) { |*args| constant_lookup(*args) } end |
.to_date(value) ⇒ Date
Coerce given value to Date
94 95 96 |
# File 'lib/virtus/coercion/string.rb', line 94 def self.to_date(value) parse_value(::Date, value) end |
.to_datetime(value) ⇒ DateTime
Coerce given value to DateTime
108 109 110 |
# File 'lib/virtus/coercion/string.rb', line 108 def self.to_datetime(value) parse_value(::DateTime, value) end |
.to_decimal(value) ⇒ BigDecimal
Coerce value to decimal
174 175 176 |
# File 'lib/virtus/coercion/string.rb', line 174 def self.to_decimal(value) to_numeric(value, :to_d) end |
.to_float(value) ⇒ Float
Coerce value to float
160 161 162 |
# File 'lib/virtus/coercion/string.rb', line 160 def self.to_float(value) to_numeric(value, :to_f) end |
.to_integer(value) ⇒ Integer
Coerce value to integer
139 140 141 142 143 144 145 146 147 148 |
# File 'lib/virtus/coercion/string.rb', line 139 def self.to_integer(value) if value =~ /\A#{INTEGER_REGEXP}\z/ value.to_i else # coerce to a Float first to evaluate scientific notation (if any) # that may change the integer part, then convert to an integer coerced = to_float(value) ::Float === coerced ? coerced.to_i : coerced end end |
.to_symbol(value) ⇒ Symbol
Coerce give value to a symbol
66 67 68 |
# File 'lib/virtus/coercion/string.rb', line 66 def self.to_symbol(value) value.to_sym end |
.to_time(value) ⇒ Time
Coerce given value to Time
80 81 82 |
# File 'lib/virtus/coercion/string.rb', line 80 def self.to_time(value) parse_value(::Time, value) end |