@@ -163,21 +163,28 @@ def find_html_files(root):
163163 html_files .append (os .path .join (dir , filename ))
164164 return html_files
165165
166- def fix_relative_link (rename_map , target , file , root ):
166+ def is_loader_link (target ):
167+ if re .match ('https?://[a-z]+\.cppreference\.com/mwiki/load\.php' , target ):
168+ return True
169+ return False
170+
171+ def transform_loader_link (target , file , root ):
172+ # Absolute loader.php links need to be made relative
173+ abstarget = os .path .join (root , "common/" + convert_loader_name (target ))
174+ return os .path .relpath (abstarget , os .path .dirname (file ))
175+
176+ def is_external_link (target ):
167177 external_link_patterns = [
168178 'http://' ,
169179 'https://' ,
170180 'ftp://'
171181 ]
172- if re .match ('https?://[a-z]+\.cppreference\.com/mwiki/load\.php' , target ):
173- # Absolute loader.php links need to be made relative
174- abstarget = os .path .join (root , "common/" + convert_loader_name (target ))
175- return os .path .relpath (abstarget , os .path .dirname (file ))
176- else :
177- for pattern in external_link_patterns :
178- if pattern in target :
179- return target
182+ for pattern in external_link_patterns :
183+ if target .startswith (pattern ):
184+ return True
185+ return False
180186
187+ def trasform_relative_link (rename_map , target ):
181188 target = urllib .parse .unquote (target )
182189 for dir ,fn ,new_fn in rename_map :
183190 target = target .replace (fn , new_fn )
@@ -188,6 +195,19 @@ def fix_relative_link(rename_map, target, file, root):
188195 target = target .replace ('%23' , '#' )
189196 return target
190197
198+ # Transforms a relative link in the given file according to rename map.
199+ # target is the link to transform.
200+ # file is the path of the file the link came from.
201+ # root is the path to the root of the archive.
202+ def fix_relative_link (rename_map , target , file , root ):
203+ if is_loader_link (target ):
204+ return transform_loader_link (target , file , root )
205+
206+ if is_external_link (target ):
207+ return target
208+
209+ return trasform_relative_link (rename_map , target )
210+
191211def has_class (el , classes_to_check ):
192212 value = el .get ('class' )
193213 if value is None :
0 commit comments