Module: TingYun::Support::Serialize::EncodingNormalizer

Defined in:
lib/ting_yun/support/serialize/encoding_normalizer.rb

Defined Under Namespace

Modules: EncodingNormalizer, IconvNormalizer

Class Method Summary collapse

Class Method Details

.choose_normalizerObject



39
40
41
42
43
44
45
# 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) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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) ⇒ Object



34
35
36
37
# File 'lib/ting_yun/support/serialize/encoding_normalizer.rb', line 34

def self.normalize_string(str)
  @normalizer ||= choose_normalizer
  @normalizer.normalize(str)
end