Class: SafeYAML::Transform::ToFloat
- Inherits:
-
Object
- Object
- SafeYAML::Transform::ToFloat
- Defined in:
- lib/safe_yaml/transform/to_float.rb
Constant Summary collapse
- Infinity =
1.0 / 0.0
- NaN =
0.0 / 0.0
- PREDEFINED_VALUES =
{ ".inf" => Infinity, ".Inf" => Infinity, ".INF" => Infinity, "-.inf" => -Infinity, "-.Inf" => -Infinity, "-.INF" => -Infinity, ".nan" => NaN, ".NaN" => NaN, ".NAN" => NaN, }.freeze
- MATCHER =
/\A[-+]?(?:\d[\d_]*)?\.[\d_]+(?:[eE][-+][\d]+)?\Z/.freeze
Instance Method Summary collapse
Instance Method Details
#transform?(value) ⇒ Boolean
21 22 23 24 |
# File 'lib/safe_yaml/transform/to_float.rb', line 21 def transform?(value) return true, Float(value) if MATCHER.match(value) try_edge_cases?(value) end |
#try_edge_cases?(value) ⇒ Boolean
26 27 28 29 30 |
# File 'lib/safe_yaml/transform/to_float.rb', line 26 def try_edge_cases?(value) return true, PREDEFINED_VALUES[value] if PREDEFINED_VALUES.include?(value) return true, Parse::Sexagesimal.value(value) if Parse::Sexagesimal::FLOAT_MATCHER.match(value) return false end |