module Gdsapi::Methods::ParseUtils

Public Instance Methods

match_attributes(set, dictionary) click to toggle source

Helping routine for matching given attributes with dictionary @param set [Array | nil] - set of {'id', 'value'}-ish attributes for country @param dictionary [Array] - dictionary of {'id', 'name'}-ish attributes @return [Array|nil] - {id:, name:, value:}-ish attributes hash if set is present, nil otherwise

# File lib/gdsapi/methods/utils/parse_utils.rb, line 9
def match_attributes(set, dictionary)
  return unless set

  grouped_set = set.group_by { |attribute| attribute['id'] }
  grouped_set.map do |id, set_attributes|
    dictionary_attribute = dictionary.find {|dict_attr| dict_attr['id'] == id }
    values = set_attributes.map { |set_attribute| set_attribute['value'] }
    if dictionary_attribute
      {
        id: dictionary_attribute['id'],
        name: dictionary_attribute['name'],
        values: values,
      }
    else
      raise MalformedGdsResponse,
        "Invalid response: missing attribute #{id}"
    end
  end
end