Skip to content

Commit

Permalink
solve the one problem
Browse files Browse the repository at this point in the history
  • Loading branch information
hedhoud committed Apr 5, 2023
1 parent 4863fb1 commit 667723a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
12 changes: 7 additions & 5 deletions num2words/lang_AR.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,9 @@ def digit_feminine_status(self, digit, group_level):
return self.arabicFeminineOnes[int(digit)]
else:
return self.arabicOnes[int(digit)]

else:
return self.arabicOnes[int(digit)]

def process_arabic_group(self, group_number, group_level,
remaining_number):
tens = Decimal(group_number) % Decimal(100)
Expand Down Expand Up @@ -195,12 +194,15 @@ def process_arabic_group(self, group_number, group_level,
ret_val = "{}".format(
self.arabicTwos[int(group_level)])
else:

if tens == 1 and group_level > 0 and hundreds == 0:
ret_val += ""
elif (tens == 1 or tens == 2) and (
group_level == 0 or group_level == -1) and \
hundreds == 0 and remaining_number == 0:
ret_val += ""
elif tens == 1 and group_level > 0:
ret_val += self.arabicGroup[int(group_level)]
else:
ret_val += self.digit_feminine_status(int(tens),
group_level)
Expand Down Expand Up @@ -263,11 +265,11 @@ def convert_to_arabic(self):
if group > 0:
if ret_val != "":
ret_val = "{}و {}".format("", ret_val)
if number_to_process != 2:
if number_to_process != 2 and number_to_process != 1:
if group >= len(self.arabicGroup):
raise OverflowError(self.errmsg_toobig % (self.number, self.MAXVAL))
if number_to_process % 100 != 1:
if 3 <= number_to_process <= 10:
if 3 <= number_to_process <= 9:
ret_val = "{} {}".format(
self.arabicPluralGroups[group], ret_val)
else:
Expand All @@ -278,7 +280,7 @@ def convert_to_arabic(self):
else:
ret_val = "{} {}".format(
self.arabicGroup[group], ret_val)

else:
ret_val = "{} {}".format(self.arabicGroup[group],
ret_val)
Expand Down
26 changes: 18 additions & 8 deletions tests/test_ar.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ def test_default_currency(self):
self.assertEqual(num2words(541, to='currency', lang='ar'),
'خمسمائة و واحد و أربعون ريالاً')
self.assertEqual(num2words(10000, to='currency', lang='ar'),
'عشرة آلاف ريال')
'عشرة ألف ريال')
self.assertEqual(num2words(20000.12, to='currency', lang='ar'),
'عشرون ألف ريال و اثنتا عشرة هللة')
self.assertEqual(num2words(1000000, to='currency', lang='ar'),
'واحد مليون ريال')
'مليون ريال')
val = 'تسعمائة و ثلاثة و عشرون ألفاً و أربعمائة و أحد عشر ريالاً'
self.assertEqual(num2words(923411, to='currency', lang='ar'), val)
self.assertEqual(num2words(63411, to='currency', lang='ar'),
'ثلاثة و ستون ألفاً و أربعمائة و أحد عشر ريالاً')
self.assertEqual(num2words(1000000.99, to='currency', lang='ar'),
'واحد مليون ريال و تسع و تسعون هللة')
'مليون ريال و تسع و تسعون هللة')

def test_currency_parm(self):
self.assertEqual(
Expand All @@ -65,7 +65,7 @@ def test_currency_parm(self):
'تسعمائة و ثلاثة و عشرون ألفاً و أربعمائة و أحد عشر ريالاً')
self.assertEqual(
num2words(1000000.99, to='currency', lang='ar', currency="KWD"),
'واحد مليون دينار و تسع و تسعون فلس')
'مليون دينار و تسع و تسعون فلس')

def test_ordinal(self):

Expand Down Expand Up @@ -103,7 +103,7 @@ def test_cardinal(self):
self.assertEqual(num2words(94231, to='cardinal', lang='ar'),
'أربعة و تسعون ألفاً و مئتان و واحد و ثلاثون')
self.assertEqual(num2words(1431, to='cardinal', lang='ar'),
'واحد ألف و أربعمائة و واحد و ثلاثون')
'ألف و أربعمائة و واحد و ثلاثون')
self.assertEqual(num2words(740, to='cardinal', lang='ar'),
'سبعمائة و أربعون')
self.assertEqual(num2words(741, to='cardinal', lang='ar'),
Expand All @@ -127,6 +127,14 @@ def test_cardinal(self):
self.assertEqual(num2words(701, to='cardinal', lang='ar'),
'سبعمائة و واحد')

self.assertEqual(num2words(1258888, to='cardinal', lang='ar'),
'مليون و مئتان و ثمانية و خمسون ألفاً و ثمانمائة و ثمانية و ثمانون')

self.assertEqual(num2words(1100, to='cardinal', lang='ar'),
'ألف و مائة')

self.assertEqual(num2words(1000000521, to='cardinal', lang='ar'),
'مليار و خمسمائة و واحد و عشرون')

def test_prefix_and_suffix(self):
self.assertEqual(num2words(645, to='currency',
Expand All @@ -147,11 +155,13 @@ def test_max_numbers(self):

def test_big_numbers(self):
self.assertEqual(num2words(1000000045000000000000003000000002000000300, to='cardinal', lang='ar'),
'واحد تريديسيليون و خمسة و أربعون ديسيليوناً و ثلاثة كوينتليونات و ملياران و ثلاثمائة'
'تريديسيليون و خمسة و أربعون ديسيليوناً و ثلاثة كوينتليونات و ملياران و ثلاثمائة'
)
self.assertEqual(num2words(-1000000000000000000000003000000002000000302, to='cardinal', lang='ar'),
'سالب واحد تريديسيليون و ثلاثة كوينتليونات و ملياران و ثلاثمائة و اثنان'
'سالب تريديسيليون و ثلاثة كوينتليونات و ملياران و ثلاثمائة و اثنان'
)
self.assertEqual(num2words(9999999999999999999999999999999999999999999999992, to='cardinal', lang='ar'),
'تسعة كوينتينيليونات و تسعمائة و تسعة و تسعون كوادريسيليوناً و تسعمائة و تسعة و تسعون تريديسيليوناً و تسعمائة و تسعة و تسعون دوديسيليوناً و تسعمائة و تسعة و تسعون أندسيليوناً و تسعمائة و تسعة و تسعون ديسيليوناً و تسعمائة و تسعة و تسعون نونيليوناً و تسعمائة و تسعة و تسعون أوكتيليوناً و تسعمائة و تسعة و تسعون سبتيليوناً و تسعمائة و تسعة و تسعون سكستيليوناً و تسعمائة و تسعة و تسعون كوينتليوناً و تسعمائة و تسعة و تسعون كوادريليوناً و تسعمائة و تسعة و تسعون تريليوناً و تسعمائة و تسعة و تسعون ملياراً و تسعمائة و تسعة و تسعون مليوناً و تسعمائة و تسعة و تسعون ألفاً و تسعمائة و اثنان و تسعون'
)
)


0 comments on commit 667723a

Please sign in to comment.