Class: Kuaidi100Rails::SHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/kuaidi100_rails.rb

Instance Method Summary collapse

Constructor Details

#initialize(json_object = nil) ⇒ SHash

Returns a new instance of SHash.



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/kuaidi100_rails.rb', line 108

def initialize(json_object=nil)
  json_object && json_object.inject(self) { |memo, (key, v)|
    if v.instance_of?(Hash)
      memo[key.to_sym]= SHash.new(v)
    elsif v.instance_of?(Array)

      s_array = ->(value) {
        value.inject([]) { |m, i|
          if i.instance_of?(Hash)
            m<< SHash.new(i)
          elsif i.instance_of?(Array)
            m<< s_array.call(i)
          else
            m<<i
          end
          m
        }
      }
      memo[key.to_sym] = s_array.call(v)
    else
      memo[key.to_sym]=v
    end
    memo
  }
end