class AWS::Core::XML::Frame

def index_keys_for index_opts, &block

def index_keys_for index_opts, &block
  # simple (single) key
  if key = index_opts[:key]
    yield(data[key])
    return
  end
  # composite key, joined by ":"
  if parts = index_opts[:keys]
    composite_key = parts.map{|part| data[part] }.join(":")
    yield(composite_key)
    return
  end
  # multiple keys, collected from the given path
  if path = index_opts[:key_path]
    keys_from_path(data, path.dup, &block)
    return
  end
  raise "missing require index rule option, :key, :keys or :key_path"
end