import csv


def confusables():
	with open("confusables.txt", encoding="utf-8-sig") as f:
		# Filter comments
		lines = (line.split("#")[0] for line in f)
		return list(csv.DictReader(lines, fieldnames=["Value", "Target", "Category"], delimiter=";"))


UNICODEDATA_FIELDS = (
	"Value",
	"Name",
	"General_Category",
	"Canonical_Combining_Class",
	"Bidi_Class",
	"Decomposition_Type",
	"Decomposition_Mapping",
	"Numeric_Type",
	"Numeric_Mapping",
	"Bidi_Mirrored",
	"Unicode_1_Name",
	"ISO_Comment",
	"Simple_Uppercase_Mapping",
	"Simple_Lowercase_Mapping",
	"Simple_Titlecase_Mapping",
)


def data():
	with open("UnicodeData.txt", encoding="utf-8") as f:
		return list(csv.DictReader(f, fieldnames=UNICODEDATA_FIELDS, delimiter=";"))


def unhex(s):
	return int(s, 16)


def unhex_sequence(s):
	return [unhex(x) for x in s.split()] if "<" not in s else None
