from ...attrs import LIKE_NUM

# reference 1: https://en.wikibooks.org/wiki/Sanskrit/Numbers

_num_words = [
    "एकः",
    "द्वौ",
    "त्रयः",
    "चत्वारः",
    "पञ्च",
    "षट्",
    "सप्त",
    "अष्ट",
    "नव",
    "दश",
    "एकादश",
    "द्वादश",
    "त्रयोदश",
    "चतुर्दश",
    "पञ्चदश",
    "षोडश",
    "सप्तदश",
    "अष्टादश",
    "एकान्नविंशति",
    "विंशति",
    "एकाविंशति",
    "द्वाविंशति",
    "त्रयोविंशति",
    "चतुर्विंशति",
    "पञ्चविंशति",
    "षड्विंशति",
    "सप्तविंशति",
    "अष्टाविंशति",
    "एकान्नत्रिंशत्",
    "त्रिंशत्",
    "एकत्रिंशत्",
    "द्वात्रिंशत्",
    "त्रयत्रिंशत्",
    "चतुस्त्रिंशत्",
    "पञ्चत्रिंशत्",
    "षट्त्रिंशत्",
    "सप्तत्रिंशत्",
    "अष्टात्रिंशत्",
    "एकोनचत्वारिंशत्",
    "चत्वारिंशत्",
    "एकचत्वारिंशत्",
    "द्वाचत्वारिंशत्",
    "त्रयश्चत्वारिंशत्",
    "चतुश्चत्वारिंशत्",
    "पञ्चचत्वारिंशत्",
    "षट्चत्वारिंशत्",
    "सप्तचत्वारिंशत्",
    "अष्टाचत्वारिंशत्",
    "एकोनपञ्चाशत्",
    "पञ्चाशत्",
    "एकपञ्चाशत्",
    "द्विपञ्चाशत्",
    "त्रिपञ्चाशत्",
    "चतुःपञ्चाशत्",
    "पञ्चपञ्चाशत्",
    "षट्पञ्चाशत्",
    "सप्तपञ्चाशत्",
    "अष्टपञ्चाशत्",
    "एकोनषष्ठिः",
    "षष्ठिः",
    "एकषष्ठिः",
    "द्विषष्ठिः",
    "त्रिषष्ठिः",
    "चतुःषष्ठिः",
    "पञ्चषष्ठिः",
    "षट्षष्ठिः",
    "सप्तषष्ठिः",
    "अष्टषष्ठिः",
    "एकोनसप्ततिः",
    "सप्ततिः",
    "एकसप्ततिः",
    "द्विसप्ततिः",
    "त्रिसप्ततिः",
    "चतुःसप्ततिः",
    "पञ्चसप्ततिः",
    "षट्सप्ततिः",
    "सप्तसप्ततिः",
    "अष्टसप्ततिः",
    "एकोनाशीतिः",
    "अशीतिः",
    "एकाशीतिः",
    "द्वशीतिः",
    "त्र्यशीतिः",
    "चतुरशीतिः",
    "पञ्चाशीतिः",
    "षडशीतिः",
    "सप्ताशीतिः",
    "अष्टाशीतिः",
    "एकोननवतिः",
    "नवतिः",
    "एकनवतिः",
    "द्विनवतिः",
    "त्रिनवतिः",
    "चतुर्नवतिः",
    "पञ्चनवतिः",
    "षण्णवतिः",
    "सप्तनवतिः",
    "अष्टनवतिः",
    "एकोनशतम्",
    "शतम्",
]


def like_num(text):
    """
    Check if text resembles a number
    """
    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 in _num_words:
        return True
    return False


LEX_ATTRS = {LIKE_NUM: like_num}