+ if siteinfo_file is not None:
+ siteinfo = open_siteinfo(siteinfo_file)
+ siteinfo = json.loads(siteinfo.read())
+
+ magicwords = siteinfo.get('query').get('magicwords')
+
+ if magicwords:
+ redirect_config = list(filter(lambda obj: obj.get("name") == "redirect", magicwords))
+ redirect_aliases = chain(* map(lambda obj: obj.get("aliases"), redirect_config))
+ redirect_aliases = list(map(lambda s: s.lstrip('#'), redirect_aliases))
+ redirect_aliases.append('REDIRECT') # just in case
+
+ # this regular expression is copied from pywikibot
+ pattern = '(?:' + '|'.join(redirect_aliases) + ')'
+ redirect_regex = re.compile(r'\s*#{pattern}\s*:?\s*\[\[(.+?)(?:\|.*?)?\]\]'
+ .format(pattern=pattern), re.IGNORECASE | re.DOTALL)
+
+ self.regex_revision_pairs.extend(self.make_matchmake_pairs([redirect_regex], ["redirect"]))