#!/usr/bin/env python3

import argparse
import fileinput
from itertools import count
import re

parser = argparse.ArgumentParser()
parser.add_argument("-s", "--simplify", nargs="*", default=[])
parser.add_argument("files", nargs="*", default=("-"))
args = parser.parse_args()

DUMP_RX = r"std::is_same_v<(.*),\s*yorel::yomm2::yomm2_end_of_dump>"
SIMPLIFICATIONS = [r"(boost|yorel)::(\w+::)+", r",hash_factors_in_globals"]

input = []

for line in fileinput.input(files=args.files):
    input.append(line)
    if match := re.search(DUMP_RX, line):
        output = re.sub(r"\s+", "", match.group(1))
        for rx in SIMPLIFICATIONS + args.simplify:
            output = re.sub(rx, "", output)
        print(output)
        exit(0)

print("no dump found in:")
for line in input:
    print(line)