from ...attrs import LIKE_NUM

# Eleven, twelve etc. are written separate: on bir, on iki

_num_words = [
    "bir",
    "iki",
    "üç",
    "dörd",
    "beş",
    "altı",
    "yeddi",
    "səkkiz",
    "doqquz",
    "on",
    "iyirmi",
    "otuz",
    "qırx",
    "əlli",
    "altmış",
    "yetmiş",
    "səksən",
    "doxsan",
    "yüz",
    "min",
    "milyon",
    "milyard",
    "trilyon",
    "kvadrilyon",
    "kentilyon",
]


_ordinal_words = [
    "birinci",
    "ikinci",
    "üçüncü",
    "dördüncü",
    "beşinci",
    "altıncı",
    "yedinci",
    "səkkizinci",
    "doqquzuncu",
    "onuncu",
    "iyirminci",
    "otuzuncu",
    "qırxıncı",
    "əllinci",
    "altmışıncı",
    "yetmişinci",
    "səksəninci",
    "doxsanıncı",
    "yüzüncü",
    "mininci",
    "milyonuncu",
    "milyardıncı",
    "trilyonuncu",
    "kvadrilyonuncu",
    "kentilyonuncu",
]

_ordinal_endings = ("inci", "ıncı", "nci", "ncı", "uncu", "üncü")


def like_num(text):
    if text.startswith(("+", "-", "±", "~")):
        text = text[1:]
    text = text.replace(",", "").replace(".", "")
    if text.isdigit():
        return True
    if text.count("/") == 1:
        num, denom = text.split("/")
        if num.isdigit() and denom.isdigit():
            return True
    text_lower = text.lower()
    # Check cardinal number
    if text_lower in _num_words:
        return True
    # Check ordinal number
    if text_lower in _ordinal_words:
        return True
    if text_lower.endswith(_ordinal_endings):
        if text_lower[:-3].isdigit() or text_lower[:-4].isdigit():
            return True
    return False


LEX_ATTRS = {LIKE_NUM: like_num}
