module TingYun::Support::Serialize::EncodingNormalizer

Public Class Methods

choose_normalizer() click to toggle source
# File lib/ting_yun/support/serialize/encoding_normalizer.rb, line 39
def self.choose_normalizer
  if TingYun::Support::LanguageSupport.supports_string_encodings?
    EncodingNormalizer
  else
    IconvNormalizer
  end
end
normalize_object(object) click to toggle source
# File lib/ting_yun/support/serialize/encoding_normalizer.rb, line 12
def self.normalize_object(object)
  case object
    when String
      normalize_string(object)
    when Symbol
      normalize_string(object.to_s)
    when Array
      return object if object.empty?
      object.map { |x| normalize_object(x) }
    when Hash
      return object if object.empty?
      hash = {}
      object.each do |k, v|
        k = normalize_string(k) if k.is_a?(String)
        k = normalize_string(k.to_s) if k.is_a?(Symbol)
        hash[k] = normalize_object(v)
      end
      hash
    else
      object
  end
end
normalize_string(str) click to toggle source
# File lib/ting_yun/support/serialize/encoding_normalizer.rb, line 34
def self.normalize_string(str)
  @normalizer ||= choose_normalizer
  @normalizer.normalize(str)
end