Module: VRT::CrossVersionMapping
- Included in:
- VRT
- Defined in:
- lib/vrt/cross_version_mapping.rb
Instance Method Summary collapse
-
#cross_version_category_mapping ⇒ Object
Maps new_category_id: deprecated_node_id and new_subcategory_id: deprecated_node_id.
- #deprecated_node?(vrt_id) ⇒ Boolean
-
#deprecated_node_json ⇒ Object
Map shape: { deprecated_id: { version: new_mapped_id } }.
- #find_deprecated_node(vrt_id, new_version = nil, max_depth = 'variant') ⇒ Object
- #find_valid_parent_node(vrt_id, new_version, max_depth) ⇒ Object
- #latest_version_for_deprecated_node(vrt_id) ⇒ Object
Instance Method Details
#cross_version_category_mapping ⇒ Object
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
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_json ⇒ Object
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 |