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.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/kuaidi100_rails.rb', line 73

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