@@ -21,6 +21,7 @@ module VRT
2121
2222 @version_json = { }
2323 @last_update = { }
24+ @maps = { }
2425
2526 module_function
2627
@@ -52,7 +53,7 @@ def last_updated(version = nil)
5253 end
5354
5455 def current_categories
55- Map . new ( current_version ) . categories
56+ get_map . categories
5657 end
5758
5859 # Get all deprecated ids that would match in the given categories from the current version
@@ -76,8 +77,8 @@ def all_matching_categories(categories)
7677 # @return [VRT::Node|Nil] A valid VRT::Node object or nil if no best match could be found
7778 def find_node ( vrt_id :, preferred_version : nil , max_depth : 'variant' , version : nil ) # rubocop:disable Lint/UnusedMethodArgument
7879 new_version = preferred_version || current_version
79- if Map . new ( new_version ) . valid? ( vrt_id )
80- Map . new ( new_version ) . find_node ( vrt_id , max_depth : max_depth )
80+ if get_map ( version : new_version ) . valid? ( vrt_id )
81+ get_map ( version : new_version ) . find_node ( vrt_id , max_depth : max_depth )
8182 elsif deprecated_node? ( vrt_id )
8283 find_deprecated_node ( vrt_id , preferred_version , max_depth )
8384 else
@@ -93,6 +94,11 @@ def get_json(version: nil, other: true)
9394 other ? @version_json [ version ] + [ OTHER_OPTION ] : @version_json [ version ]
9495 end
9596
97+ def get_map ( version : nil )
98+ version ||= current_version
99+ @maps [ version ] ||= Map . new ( version )
100+ end
101+
96102 # Get names of directories matching lib/data/<major>-<minor>/
97103 def json_dir_names
98104 DIR . entries
@@ -121,6 +127,7 @@ def reload!
121127 unload!
122128 versions
123129 get_json
130+ get_map
124131 last_updated
125132 mappings
126133 end
@@ -130,6 +137,7 @@ def unload!
130137 @versions = nil
131138 @version_json = { }
132139 @last_update = { }
140+ @maps = { }
133141 @mappings = nil
134142 end
135143end
0 commit comments