Module: Codgen::Mapping

Defined in:
lib/codgen/mapping.rb

Class Method Summary collapse

Class Method Details

.map_object(json_data, json_map_data) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/codgen/mapping.rb', line 3

def self.map_object(json_data, json_map_data)
  if json_data != nil && json_data.is_a?(Array)
    json_data.each do |item|
      map_object(item, json_map_data)
    end
    return
  end

  add_entries = Hash.new
  json_data.each do |key, value|
    if value != nil && value.is_a?(Array) || value.is_a?(Hash)
      map_object(value, json_map_data)
      next
    end

    map = json_map_data[key]
    if map != nil
      map.each do |output_key, value_map|
        unless json_data.has_key?(output_key)
          output_value = value
          value_map.each do |match_expr, map_value|
            if Regexp.new(match_expr).match(value)
              output_value = map_value
              break
            end
          end
          add_entries.store(output_key, output_value)
        end
      end
    end
  end

  add_entries.each do |key, value|
    json_data.store(key, value)
  end
end