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.
- #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, old_version, 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
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
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_json ⇒ Object
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 |