import json
from pathlib import Path
from typing import List

NOT_NORM_DIR = Path("./not_normalized")
NORM_DIR = Path("./")
LANGS = [
    "pt_br",
    "en_us",
]


def load_data(path: Path) -> List[str]:
    with path.open("r") as file:
        return json.load(file)


def remove_duplicates(data: List[str]):
    return list(set(data))


def capitalize(data: List[str]):
    return list(map(str.upper, data))


def sort_list(data: List[str]):
    return sorted(data)


def normalize(data: List[str]):
    data = capitalize(data)
    data = remove_duplicates(data)
    data = sort_list(data)
    return data


def write_normalize(data: List[str], path: Path):
    with path.open("w+") as file:
        json.dump(data, file)


def normalize_all():
    for lang in LANGS:
        fp = NOT_NORM_DIR / f"{lang}.json"
        data = load_data(fp)
        data = normalize(data)
        write_normalize(data, NORM_DIR / f"{lang}.json")


if __name__ == "__main__":
    normalize_all()
