Module: Swirl::Helpers::Compactor

Included in:
AWS
Defined in:
lib/swirl/helpers.rb

Class Method Summary collapse

Class Method Details

.compact(response) ⇒ Object



7
8
9
10
11
# File 'lib/swirl/helpers.rb', line 7

def compact(response)
  root_key = response.keys.first
  base = response[root_key]
  compact!(base)
end

.compact!(data) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/swirl/helpers.rb', line 14

def compact!(data)
  data.inject({}) do |com, (key, value)|
    if value.is_a?(Hash)
      converted = if value.has_key?("item") || value.has_key?("member")
        items = value["item"] || value ["member"]
        items ||= []
        items = items.is_a?(Array) ? items : [items]
        items.map {|item| compact!(item) }
      else
        []
      end
      com[key] = converted
    elsif key == "xmlns"
      next(com)
    else
      com[key] = value
    end
    com
  end
end