Module: Gdsapi::Methods::ParseUtils

Included in:
BaseMethod
Defined in:
lib/gdsapi/methods/utils/parse_utils.rb

Instance Method Summary collapse

Instance Method Details

#match_attributes(set, dictionary) ⇒ Array[Hash]|nil

Helping routine for matching given attributes with dictionary

Parameters:

  • set (Array[Hash] | nil)
    • set of ‘value’-ish attributes for country

  • dictionary (Array[Hash])
    • dictionary of ‘name’-ish attributes

Returns:

  • (Array[Hash]|nil)
    • name:, value:-ish attributes hash if set is present, nil otherwise



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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