from ...attrs import LIKE_NUM

_num_words = [
    "không",  # Zero
    "một",  # One
    "mốt",  # Also one, irreplacable in niché cases for unit digit such as "51"="năm mươi mốt"
    "hai",  # Two
    "ba",  # Three
    "bốn",  # Four
    "tư",  # Also four, used in certain cases for unit digit such as "54"="năm mươi tư"
    "năm",  # Five
    "lăm",  # Also five, irreplacable in niché cases for unit digit such as "55"="năm mươi lăm"
    "sáu",  # Six
    "bảy",  # Seven
    "bẩy",  # Also seven, old fashioned
    "tám",  # Eight
    "chín",  # Nine
    "mười",  # Ten
    "chục",  # Also ten, used for counting in tens such as "20 eggs"="hai chục trứng"
    "trăm",  # Hundred
    "nghìn",  # Thousand
    "ngàn",  # Also thousand, used in the south
    "vạn",  # Ten thousand
    "triệu",  # Million
    "tỷ",  # Billion
    "tỉ",  # Also billion, used in combinatorics such as "tỉ_phú"="billionaire"
]


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
    if text.lower() in _num_words:
        return True
    return False


LEX_ATTRS = {LIKE_NUM: like_num}