2022-03-07 15:20:39 +00:00
|
|
|
from ...attrs import LIKE_NUM
|
|
|
|
|
|
|
|
_num_words = [
|
|
|
|
"nul",
|
2022-03-11 11:20:23 +00:00
|
|
|
"jedyn",
|
|
|
|
"jedna",
|
|
|
|
"jedne",
|
|
|
|
"dwaj",
|
|
|
|
"dwě",
|
|
|
|
"tři",
|
|
|
|
"třo",
|
|
|
|
"štyri",
|
|
|
|
"štyrjo",
|
2022-03-07 15:20:39 +00:00
|
|
|
"pjeć",
|
|
|
|
"šěsć",
|
|
|
|
"sydom",
|
|
|
|
"wosom",
|
|
|
|
"dźewjeć",
|
|
|
|
"dźesać",
|
|
|
|
"jědnaće",
|
|
|
|
"dwanaće",
|
|
|
|
"třinaće",
|
|
|
|
"štyrnaće",
|
|
|
|
"pjatnaće",
|
|
|
|
"šěsnaće",
|
|
|
|
"sydomnaće",
|
|
|
|
"wosomnaće",
|
|
|
|
"dźewjatnaće",
|
2022-03-11 11:20:23 +00:00
|
|
|
"dwaceći",
|
2022-03-07 15:20:39 +00:00
|
|
|
"třiceći",
|
|
|
|
"štyrceći",
|
|
|
|
"pjećdźesat",
|
|
|
|
"šěsćdźesat",
|
|
|
|
"sydomdźesat",
|
|
|
|
"wosomdźesat",
|
|
|
|
"dźewjećdźesat",
|
|
|
|
"sto",
|
|
|
|
"tysac",
|
|
|
|
"milion",
|
|
|
|
"miliarda",
|
|
|
|
"bilion",
|
|
|
|
"biliarda",
|
|
|
|
"trilion",
|
|
|
|
"triliarda",
|
|
|
|
]
|
|
|
|
|
|
|
|
_ordinal_words = [
|
2022-03-11 11:20:23 +00:00
|
|
|
"prěni",
|
|
|
|
"prěnja",
|
|
|
|
"prěnje",
|
|
|
|
"druhi",
|
|
|
|
"druha",
|
|
|
|
"druhe",
|
|
|
|
"třeći",
|
|
|
|
"třeća",
|
|
|
|
"třeće",
|
|
|
|
"štwórty",
|
|
|
|
"štwórta",
|
|
|
|
"štwórte",
|
|
|
|
"pjaty",
|
|
|
|
"pjata",
|
|
|
|
"pjate",
|
|
|
|
"šěsty",
|
|
|
|
"šěsta",
|
|
|
|
"šěste",
|
|
|
|
"sydmy",
|
|
|
|
"sydma",
|
|
|
|
"sydme",
|
|
|
|
"wosmy",
|
|
|
|
"wosma",
|
|
|
|
"wosme",
|
|
|
|
"dźewjaty",
|
|
|
|
"dźewjata",
|
|
|
|
"dźewjate",
|
|
|
|
"dźesaty",
|
|
|
|
"dźesata",
|
|
|
|
"dźesate",
|
|
|
|
"jědnaty",
|
|
|
|
"jědnata",
|
|
|
|
"jědnate",
|
|
|
|
"dwanaty",
|
|
|
|
"dwanata",
|
|
|
|
"dwanate",
|
2022-03-07 15:20:39 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
if text_lower in _num_words:
|
|
|
|
return True
|
|
|
|
# Check ordinal number
|
|
|
|
if text_lower in _ordinal_words:
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
LEX_ATTRS = {LIKE_NUM: like_num}
|