Sha256: 055716286b8fd63e39fb885c1d2d81076d155c1031b8096e364b2f0138c631cb

Contents?: true

Size: 911 Bytes

Versions: 2

Compression:

Stored size: 911 Bytes

Contents

require 'base64'

module SafeYAML
  class Transform
    TRANSFORMERS = [
      Transform::ToSymbol.new,
      Transform::ToInteger.new,
      Transform::ToFloat.new,
      Transform::ToNil.new,
      Transform::ToBoolean.new,
      Transform::ToDate.new,
      Transform::ToTime.new
    ]

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

      if value.is_a?(String)
        TRANSFORMERS.each do |transformer|
          success, transformed_value = transformer.transform?(value)
          return transformed_value if success
        end
      end

      value
    end
    
    def self.to_proper_type(value, quoted=false,tag=nil)
      case tag
      when "tag:yaml.org,2002:binary"
        return Base64.decode64(value)
      when "x-private:binary"
        return Base64.decode64(value)
      else
        return self.to_guessed_type(value, quoted)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
safe_yaml-0.7.1 lib/safe_yaml/transform.rb
safe_yaml-0.7.0 lib/safe_yaml/transform.rb