def parse_line()

in tools/asciidoc_to_fragments.py [0:0]


def parse_line(line, kind):
    global fragments_counter
    fragments_counter += 1

    summary, *entries = line.split(" {")
    if len(entries) == 0:
        print(f"Warning: {line} -> no PR/issue fields\n")

    fragment_dict = {"kind": kind}
    fragment_dict["summary"] = summary.lstrip(field_token).strip()
    fragment_dict["summary"] = fragment_dict["summary"].replace(":", "")

    # sanitize filename and use only first 80 chars to prevent getting a filename too long (that may error on write)
    filename = sanitize_filename(fragment_dict["summary"].rstrip("."))[:80]

    pr_repo, issue_repo, fragment_timestamp = "", "", ""

    for entry in entries:
        number = entry[entry.find("[")+1:entry.find("]")]
        number = ''.join(filter(lambda n: n.isdigit(), number))
        entry_data = entry.split("}")[0]

        try:
            fragment_field, repo = entry_data.split("-")
            repo_link = repo_dict[repo]
        except ValueError:
            fragment_field, repo_link = entry_data, default_repolink

        if fragment_field in fragment_dict.keys():
            print(f"Skipping {line} -> multiple PRs/issues found\n")
            return

        if fragment_field == "pull":
            fragment_dict["pr"] = ''.join([repo_link, '/pull/', number])
            pr_number, pr_repo = number, repo_link
        elif fragment_field == "issue":
            fragment_dict["issue"] = ''.join([repo_link, '/issues/', number])
            issue_number, issue_repo = number, repo_link
    
    if pr_repo:
        fragment_timestamp = get_event_timestamp(pr_repo, "pulls", pr_number)
    elif issue_repo:
        fragment_timestamp = get_event_timestamp(issue_repo, "issues", issue_number)

    if fragment_timestamp == "not_found":
        print(f"Skipping {line} -> no response from Github API\n")
        return
    if fragment_timestamp == "event_open":
        print(f"Skipping {line} -> PR/issue still open!\n")
        return

    if issue_repo != pr_repo and pr_repo:
        try:
            del fragment_dict["issue"]
            print(f"Warning: {line} -> issue info lost due to multiple repositories\n")
        except KeyError:
            pass

    write_fragment(filename, fragment_timestamp, fragment_dict)