module VRT::CrossVersionMapping
Public Instance Methods
cross_version_category_mapping()
click to toggle source
Maps new_category_id: deprecated_node_id and new_subcategory_id: deprecated_node_id
# 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)
click to toggle source
# File lib/vrt/cross_version_mapping.rb, line 24 def deprecated_node?(vrt_id) deprecated_node_json[vrt_id] end
deprecated_node_json()
click to toggle source
Map
shape: { deprecated_id: { version: new_mapped_id } }
# 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')
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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