""" Handling of rejected file information. """ import os import re from utils import constants as c, utils as u matcher = re.compile(r'(.*)? \((.*)?\): (.*)') # general structure: name (link, link): description def read_rejected_file(): """ :return: """ rejected_file = os.path.join(c.root_path, 'code', 'rejected.txt') text = u.read_text(rejected_file) rejected = [] for line in text.split('\n'): # print(line) matches = matcher.findall(line)[0] # we know there will be exactly one match on every line name = matches[0].strip() links = matches[1].split(',') links = [link.strip() for link in links] description = matches[2].strip() rejected.append({'Title': name, 'URLs': links, 'Description': description}) return rejected def write_rejected_file(rejected): """ :param rejected: """ # sort by name rejected.sort(key=lambda x: str.casefold(x[0])) # expand single items rejected = ['{} ({}): {}'.format(item[0], ', '.join(item[1]), item[2]) for item in rejected] # join with newlines rejected = '\n'.join(rejected) # write to file rejected_file = os.path.join(c.root_path, 'code', 'rejected.txt') u.write_text(rejected_file, rejected)