mmaction2 / docs /en /utils.py
niobures's picture
mmaction2
d3dbf03 verified
import re
from pathlib import Path
def replace_link(pattern, template, content, file_path):
MMACT_ROOT = Path(__file__).absolute().parents[2]
GITHUB_PREFIX = 'https://github.com/open-mmlab/mmaction2/blob/main/'
def replace_core(matchobj):
name = matchobj.group(1)
link = matchobj.group(2)
if link.startswith('http') or link.startswith('#'):
return template.format(name, link)
# For link relative to project folder, such as '/configs/*/*.py'
elif Path(link).is_absolute():
link = link.lstrip('/')
folder = MMACT_ROOT
# For link relative to current file, such as './config/*.py'
else:
folder = file_path.parent
file_link = link.split('#')[0]
assert (folder / file_link).exists(), \
f'Link not found:\n{file_path}: {folder / link}'
rel_link = (folder / link).resolve().relative_to(MMACT_ROOT)
link = GITHUB_PREFIX + str(rel_link)
return template.format(name, link)
return re.sub(pattern, replace_core, content)