module RgGen::Core::RegisterMap::HashLoader

Constants

SUB_LAYER_KEYS
SUB_LAYER_KEY_MAP

Private Instance Methods

convert_to_hash(read_data, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 70
def convert_to_hash(read_data, file)
  Hash(read_data)
rescue TypeError => e
  raise Core::LoadError.new(e.message, file)
end
fomrat_hash_layer_data(read_data, layer, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 37
def fomrat_hash_layer_data(read_data, layer, file)
  convert_to_hash(read_data, file).except(*SUB_LAYER_KEYS[layer])
end
format_array_layer_data(read_data, layer, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 31
def format_array_layer_data(read_data, layer, file)
  read_data
    .map { |data| fomrat_hash_layer_data(data, layer, file) }
    .inject(&:merge)
end
format_array_sub_layer_data(read_data, layer, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 49
def format_array_sub_layer_data(read_data, layer, file)
  read_data.each_with_object({}) do |data, sub_layer_data|
    format_hash_sub_layer_data(data, layer, file, sub_layer_data)
  end
end
format_hash_sub_layer_data(read_data, layer, file, sub_layer_data = {}) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 55
def format_hash_sub_layer_data(read_data, layer, file, sub_layer_data = {})
  convert_to_hash(read_data, file)
    .slice(*SUB_LAYER_KEYS[layer])
    .each { |k, v| merge_sub_layer_data(sub_layer_data, layer, k, v) }
  sub_layer_data
end
format_layer_data(read_data, layer, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 23
def format_layer_data(read_data, layer, file)
  if read_data.is_a?(Array)
    format_array_layer_data(read_data, layer, file)
  else
    fomrat_hash_layer_data(read_data, layer, file)
  end
end
format_sub_layer_data(read_data, layer, file) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 41
def format_sub_layer_data(read_data, layer, file)
  if read_data.is_a?(Array)
    format_array_sub_layer_data(read_data, layer, file)
  else
    format_hash_sub_layer_data(read_data, layer, file)
  end
end
merge_sub_layer_data(sub_layer_data, layer, key, value) click to toggle source
# File lib/rggen/core/register_map/hash_loader.rb, line 62
def merge_sub_layer_data(sub_layer_data, layer, key, value)
  if SUB_LAYER_KEY_MAP[layer].key?(key)
    (sub_layer_data[SUB_LAYER_KEY_MAP[layer][key]] ||= []).concat(value)
  else
    (sub_layer_data[key] ||= []) << value
  end
end