Source code for maha.parsers.rules.numeral.values

from maha.expressions import EXPRESSION_SPACE_OR_NONE
from maha.parsers.templates import Value
from maha.rexy import Expression, non_capturing_group

from ..common import ALL_ALEF, SUM_SUFFIX, TEH_OPTIONAL_SUFFIX, TWO_SUFFIX

[docs]TEN_SUFFIX = f"{EXPRESSION_SPACE_OR_NONE}[تط]?[اع]?شر?[ةه]?"
[docs]EXPRESSION_OF_FASILA = Expression("فاصل" + TEH_OPTIONAL_SUFFIX)
[docs]three_prefix = "[ثت]لا[ثت]"
[docs]four_prefix = "[أا]ربع"
[docs]five_prefix = "خمس"
[docs]six_prefix = "ست"
[docs]seven_prefix = "سبع"
[docs]eight_prefix = "[تث]ما?ني?"
[docs]nine_prefix = "تسع"
[docs]ten_prefix = "عشر"
[docs]ZERO = Value(0, "صفر")
[docs]ONE = Value(1, "وا?حد" + TEH_OPTIONAL_SUFFIX)
[docs]TWO = Value(2, "[إا]?[ثت]نت?[اي]ن")
[docs]THREE = Value(3, three_prefix + TEH_OPTIONAL_SUFFIX)
[docs]FOUR = Value(4, four_prefix + TEH_OPTIONAL_SUFFIX)
[docs]FIVE = Value(5, five_prefix + TEH_OPTIONAL_SUFFIX)
[docs]SIX = Value(6, six_prefix + TEH_OPTIONAL_SUFFIX)
[docs]SEVEN = Value(7, seven_prefix + TEH_OPTIONAL_SUFFIX)
[docs]EIGHT = Value(8, eight_prefix + TEH_OPTIONAL_SUFFIX)
[docs]NINE = Value(9, nine_prefix + TEH_OPTIONAL_SUFFIX)
[docs]TEN = Value(10, ten_prefix + TEH_OPTIONAL_SUFFIX)
[docs]ELEVEN = Value(11, f"{ALL_ALEF}?حد[اى]?" + TEN_SUFFIX)
[docs]TWELVE = Value( 12, non_capturing_group( f"{ALL_ALEF}[طت]نا?" + TEN_SUFFIX, f"{ALL_ALEF}[ثت]نت?[اىي]ن?" + TEN_SUFFIX, ), )
[docs]THIRTEEN = Value(13, "[ثت]لا?[ثت]" + TEH_OPTIONAL_SUFFIX + TEN_SUFFIX)
[docs]FOURTEEN = Value(14, FOUR + TEN_SUFFIX)
[docs]FIFTEEN = Value(15, FIVE + TEN_SUFFIX)
[docs]SIXTEEN = Value(16, SIX + TEN_SUFFIX)
[docs]SEVENTEEN = Value(17, SEVEN + TEN_SUFFIX)
[docs]EIGHTEEN = Value(18, "[تث]ما?ني?" + TEH_OPTIONAL_SUFFIX + TEN_SUFFIX)
[docs]NINETEEN = Value(19, NINE + TEN_SUFFIX)
[docs]TWENTY = Value(20, ten_prefix + SUM_SUFFIX)
[docs]THIRTY = Value(30, three_prefix + SUM_SUFFIX)
[docs]FORTY = Value(40, four_prefix + SUM_SUFFIX)
[docs]FIFTY = Value(50, five_prefix + SUM_SUFFIX)
[docs]SIXTY = Value(60, six_prefix + SUM_SUFFIX)
[docs]SEVENTY = Value(70, seven_prefix + SUM_SUFFIX)
[docs]EIGHTY = Value(80, eight_prefix + SUM_SUFFIX)
[docs]NINETY = Value(90, nine_prefix + SUM_SUFFIX)
[docs]ONE_HUNDRED = Value(100, "ما?[يئ][ةه]")
[docs]TWO_HUNDREDS = Value(200, "م[يئ]ت" + TWO_SUFFIX)
[docs]THREE_HUNDREDS = Value(300, THREE + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]FOUR_HUNDREDS = Value(400, FOUR + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]FIVE_HUNDREDS = Value(500, FIVE + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]SIX_HUNDREDS = Value(600, SIX + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]SEVEN_HUNDREDS = Value(700, SEVEN + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]EIGHT_HUNDREDS = Value(800, EIGHT + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]NINE_HUNDREDS = Value(900, NINE + EXPRESSION_SPACE_OR_NONE + ONE_HUNDRED)
[docs]SEVERAL_HUNDREDS = Value(100, "م[يئ]ات")
[docs]ONE_THOUSAND = Value(1000, "[أا]لف")
[docs]TWO_THOUSANDS = Value(2000, ONE_THOUSAND + TWO_SUFFIX)
[docs]SEVERAL_THOUSANDS = Value( 1000, non_capturing_group(f"{ALL_ALEF}ل[او]ف", f"{ALL_ALEF}لفات") )
[docs]ONE_MILLION = Value(1000000, "مليون")
[docs]TWO_MILLIONS = Value(2000000, ONE_MILLION + TWO_SUFFIX)
[docs]SEVERAL_MILLIONS = Value(1000000, "ملايين")
[docs]ONE_BILLION = Value(1000000000, non_capturing_group("بليون", "مليار"))
[docs]TWO_BILLIONS = Value(2000000000, ONE_BILLION + TWO_SUFFIX)
[docs]SEVERAL_BILLIONS = Value(1000000000, non_capturing_group("بلايين", "مليارات"))
[docs]ONE_TRILLION = Value(1000000000000, "تري?ليون")
[docs]TWO_TRILLIONS = Value(2000000000000, ONE_TRILLION + TWO_SUFFIX)
[docs]SEVERAL_TRILLIONS = Value(1000000000000, ONE_TRILLION + "ات")