Module: VRT::CrossVersionMapping

Included in:
VRT
Defined in:
lib/vrt/cross_version_mapping.rb

Instance Method Summary collapse

Instance Method Details

#cross_version_category_mappingObject

Maps new_category_id: deprecated_node_id and new_subcategory_id: deprecated_node_id



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/vrt/cross_version_mapping.rb', line 5

def cross_version_category_mapping
  category_map = {}
  deprecated_node_json.each do |key, value|
    latest_version = value.keys.max_by { |n| Gem::Version.new(n) }
    id_list = value[latest_version].split('.')
    cat_id = id_list[0]
    sub_id = id_list[0..1].join('.')
    category_map[cat_id] ? category_map[cat_id] << key : category_map[cat_id] = [key]
    category_map[sub_id] ? category_map[sub_id] << key : category_map[sub_id] = [key]
  end
  category_map
end

#deprecated_node?(vrt_id) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/vrt/cross_version_mapping.rb', line 24

def deprecated_node?(vrt_id)
  deprecated_node_json[vrt_id]
end

#deprecated_node_jsonObject

Map shape: { deprecated_id: { version: new_mapped_id } }



19
20
21
22
# File 'lib/vrt/cross_version_mapping.rb', line 19

def deprecated_node_json
  filename = VRT::DIR.join(current_version, 'deprecated-node-mapping.json')
  File.file?(filename) ? JSON.parse(File.read(filename)) : {}
end

#find_deprecated_node(vrt_id, new_version = nil, max_depth = 'variant') ⇒ Object



32
33
34
35
36
37
# File 'lib/vrt/cross_version_mapping.rb', line 32

def find_deprecated_node(vrt_id, new_version = nil, max_depth = 'variant')
  version = latest_version_for_deprecated_node(vrt_id)
  node_id = deprecated_node_json[vrt_id][new_version] || deprecated_node_json[vrt_id][version]
  new_node = VRT::Map.new(new_version).find_node(node_id, max_depth: max_depth)
  new_node.nil? ? find_deprecated_node(node_id, new_version, max_depth) : new_node
end

#find_valid_parent_node(vrt_id, new_version, max_depth) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/vrt/cross_version_mapping.rb', line 39

def find_valid_parent_node(vrt_id, new_version, max_depth)
  new_map = VRT::Map.new(new_version)
  if new_map.valid?(vrt_id)
    new_map.find_node(vrt_id, max_depth: max_depth)
  else
    parent = vrt_id.split('.')[0..-2].join('.')
    return nil if parent.empty?

    find_valid_parent_node(parent, new_version, max_depth)
  end
end

#latest_version_for_deprecated_node(vrt_id) ⇒ Object



28
29
30
# File 'lib/vrt/cross_version_mapping.rb', line 28

def latest_version_for_deprecated_node(vrt_id)
  deprecated_node_json[vrt_id].keys.max_by { |n| Gem::Version.new(n) }
end