from parser.parser import Parser
import os
from os.path import join, dirname
from pathlib import Path
import re
import sys
import cProfile
import configparser
import logging

SSJ500K_2_1 = 27829  # number of sentences
par = Parser()

# path to data
config = configparser.ConfigParser()
config.read("tools.cfg")
INDIR = Path(config["tools"]["kres_orig"])
OUTDIR = Path(config["tools"]["kres_tsv"])
LOGFILE = Path(config["tools"]["logfile"]).absolute().resolve()

logging.basicConfig(filename=str(LOGFILE), level=logging.INFO)

"""
print("parsing ssj")
ssj_file = "../data/ssj500k-sl.sample.xml"
ssj_dict = par.parse_tei(ssj_file)
# assert (len(ssj_dict) == 27829), "Parsed wrong number of sentences."
print("end parsing ssj")
"""

logging.info("parsing kres")
# kres_file = "../data/kres_example/F0019343.xml.parsed.xml"
OUTDIR.mkdir(exist_ok=True)

infiles = [x for x in INDIR.iterdir() if x.is_file()]
for i, kres_file in enumerate(infiles):

    logging.info("Processing file ({}/{}): {}".format(i+1, len(infiles), str(kres_file)))
    res_dict = par.parse_tei(kres_file)
    kres_out_str = ""

    for _, sentence in res_dict.items():
        kres_out_str += par.to_conll_2009_SRL(sentence)

    with (OUTDIR / kres_file.name).with_suffix(".tsv").open("wb+") as fp:
        fp.write(kres_out_str.encode("utf-8"))
logging.info("end parsing kres")
