Class: SafeYAML::Transform

Inherits:
Object
  • Object
show all
Defined in:
lib/safe_yaml/transform.rb,
lib/safe_yaml/transform/to_nil.rb,
lib/safe_yaml/transform/to_date.rb,
lib/safe_yaml/transform/to_float.rb,
lib/safe_yaml/transform/to_symbol.rb,
lib/safe_yaml/transform/to_boolean.rb,
lib/safe_yaml/transform/to_integer.rb,
lib/safe_yaml/transform/transformation_map.rb

Defined Under Namespace

Modules: TransformationMap Classes: ToBoolean, ToDate, ToFloat, ToInteger, ToNil, ToSymbol

Constant Summary collapse

TRANSFORMERS =
[
  Transform::ToSymbol.new,
  Transform::ToInteger.new,
  Transform::ToFloat.new,
  Transform::ToNil.new,
  Transform::ToBoolean.new,
  Transform::ToDate.new
]

Class Method Summary collapse

Class Method Details

.to_guessed_type(value, quoted = false, options = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/safe_yaml/transform.rb', line 14

def self.to_guessed_type(value, quoted=false, options=nil)
  return value if quoted

  if value.is_a?(String)
    TRANSFORMERS.each do |transformer|
      success, transformed_value = transformer.method(:transform?).arity == 1 ?
        transformer.transform?(value) :
        transformer.transform?(value, options)

      return transformed_value if success
    end
  end

  value
end

.to_proper_type(value, quoted = false, tag = nil, options = nil) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/safe_yaml/transform.rb', line 30

def self.to_proper_type(value, quoted=false, tag=nil, options=nil)
  case tag
  when "tag:yaml.org,2002:binary", "x-private:binary", "!binary"
    decoded = Base64.decode64(value)
    decoded = decoded.force_encoding(value.encoding) if decoded.respond_to?(:force_encoding)
    decoded
  else
    self.to_guessed_type(value, quoted, options)
  end
end