Module: Swirl::Helpers::Compactor

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

Constant Summary collapse

Lists =
[
  "keySet",
  "groupSet",
  "blockDeviceMapping",
  "instancesSet",
  "reservationSet",
  "imagesSet",
  "ownersSet",
  "executableBySet",
  "securityGroupSet",
  "ipPermissions",
  "ipRanges",
  "groups",
  "securityGroupInfo",
  "add",
  "remove",
  "launchPermission",
  "productCodes",
  "availabilityZoneSet",
  "availabilityZoneInfo",
  "publicIpsSet",
  "addressesSet"
]

Class Method Summary collapse

Class Method Details

.compact(response) ⇒ Object



31
32
33
34
35
# File 'lib/swirl/helpers.rb', line 31

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

.compact!(data) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/swirl/helpers.rb', line 38

def compact!(data)
  data.inject({}) do |com, (key, value)|
    if value.is_a?(Hash)
      converted = if value.has_key?("item")
        items = value["item"]
        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