def create_issue_links_outside_projects()

in migration/src/jira_util.py [0:0]


def create_issue_links_outside_projects(text: str) -> str:
    """Create links to outside ASF projects.
    """

    def repl_simple(m: re.Match):
        prj = m.group(2).split("-")[0]
        if prj not in ALL_JIRA_PROJECTS:
            return m.group(0)
        jira_link = ASF_JIRA_BASE + m.group(2)
        return f"{m.group(1)}[{m.group(2)}]({jira_link}){m.group(3)}"

    def repl_paren(m: re.Match):
        prj = m.group(2).split("-")[0]
        if prj not in ALL_JIRA_PROJECTS:
            return m.group(0)
        jira_link = ASF_JIRA_BASE + m.group(2)
        return f"{m.group(1)}[{m.group(2)}]({jira_link}){m.group(3)}"

    def repl_bracket(m: re.Match):
        prj = m.group(2).split("-")[0]
        if prj not in ALL_JIRA_PROJECTS:
            return m.group(0)
        jira_link = ASF_JIRA_BASE + m.group(2)
        return jira_link

    text = re.sub(r"(\s)([A-Z0-9]{2,20}-\d+)([\s,;:\?\!\.])", repl_simple, text)
    text = re.sub(r"(^)([A-Z0-9]{2,20}-\d+)([\s,;:\?\!\.])", repl_simple, text)
    text = re.sub(r"(\()([A-Z0-9]{2,20}-\d+)(\))", repl_paren, text)
    text = re.sub(r"(\[)([A-Z0-9]{2,20}-\d+)(\])(?!\()", repl_bracket, text)

    return text