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



4
5
6
7
8
9
10
11
12
# File 'lib/vrt/cross_version_mapping.rb', line 4

def cross_version_category_mapping
  category_map = {}
  deprecated_node_json.each do |key, value|
    latest_version = value.keys.sort_by { |n| Gem::Version.new(n) }.last
    id = value[latest_version].split('.')[0]
    category_map[id] ? category_map[id] << key : category_map[id] = [key]
  end
  category_map
end

#deprecated_node?(vrt_id) ⇒ Boolean

Returns:

  • (Boolean)


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

def deprecated_node?(vrt_id)
  deprecated_node_json[vrt_id]
end

#deprecated_node_jsonObject

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



15
16
17
18
# File 'lib/vrt/cross_version_mapping.rb', line 15

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



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

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]
  VRT::Map.new(new_version).find_node(node_id, max_depth: max_depth)
end

#find_valid_parent_node(vrt_id, old_version, new_version, max_depth) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/vrt/cross_version_mapping.rb', line 34

def find_valid_parent_node(vrt_id, old_version, new_version, max_depth)
  old_node = VRT::Map.new(old_version).find_node(vrt_id)
  new_map = VRT::Map.new(new_version)
  if new_map.valid?(vrt_id)
    new_map.find_node(vrt_id, max_depth: max_depth)
  else
    return nil if old_node.parent.nil?
    find_valid_parent_node(old_node.parent.qualified_vrt_id, old_version, new_version, max_depth)
  end
end

#latest_version_for_deprecated_node(vrt_id) ⇒ Object



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

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