def process_body()

in gh-data.py [0:0]


def process_body(issue):
    lines = issue["body"].splitlines()

    body = {
        "title": None,
        "url": None,
        "explainer": None,
        "mdn": None,
        "caniuse": None,
        "bug": None,
        "webkit": None,
    }

    legacy_mapping = {
        # "specification title": "title",  # Always use the issue title
        "specification or proposal url (if available)": "url",
        "specification or proposal url": "url",
        "explainer url (if available)": "explainer",
        "explainer url": "explainer",
        "mdn url (optional)": "mdn",
        "caniuse.com url (optional)": "caniuse",
        "caniuse.com url": "caniuse",
        "bugzilla url (optional)": "bug",
        "bugzilla url": "bug",
        "webkit standards-position": "webkit",
    }

    yaml_mapping = {
        # Specification title
        "Specification or proposal URL (if available)": "url",
        "Explainer URL (if available)": "explainer",
        "MDN URL": "mdn",
        "Caniuse.com URL": "caniuse",
        "Bugzilla URL": "bug",
        "WebKit standards-position": "webkit",
    }

    # Legacy issues using ISSUE_TEMPLATE.md
    if issue["number"] < 1175:
        for line in lines:
            if line == "### Other information":
                break
            for title, key in legacy_mapping.items():
                text_title = f"* {title}: "
                if line.lower().startswith(text_title):
                    value = line[len(text_title) :].strip()
                    if key in ("url", "explainer", "mdn", "caniuse", "bug", "webkit"):
                        value = get_url(value)
                    if value != "" and value.lower() != "n/a":
                        body[key] = value
                    break
    # Issues using YAML template
    else:
        expect_response = None
        skip = False
        for line in lines:
            if line == "### Other information":
                break
            for title, key in yaml_mapping.items():
                text_title = f"### {title}"
                if line == text_title:
                    expect_response = key
                    skip = True
                    break
            if skip:
                skip = False
                continue
            if expect_response:
                value = line.strip()
                if key in ("url", "explainer", "mdn", "caniuse", "bug", "webkit"):
                    value = get_url(value)
                if value and value != "_No response_" and value.lower() != "n/a":
                    body[expect_response] = value
                    expect_response = None

    return body