Skip to content

Commit

Permalink
Merge pull request #477 from emregeldegul/#454
Browse files Browse the repository at this point in the history
#454: [tr] fix negative number problem
  • Loading branch information
mrodriguezg1991 authored Aug 19, 2022
2 parents a218b33 + a7d095c commit 931d71b
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 22 deletions.
48 changes: 27 additions & 21 deletions num2words/lang_TR.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,17 @@ def to_cardinal(self, value):

if not int(value) == value:
return self.to_cardinal_float(value)

if str(value).startswith("-"):
pre_word, value = self.negword, float(str(value)[1:])
else:
pre_word, value = "", float(value)

self.to_splitnum(value)

if self.order_of_last_zero_digit >= len(self.integers_to_read[0]):
# number like 00 and all 0s and even more, raise error
return wrd
return "%s%s" % (pre_word, wrd)

if self.total_triplets_to_read == 1:
if self.total_digits_outside_triplets == 2:
Expand All @@ -137,7 +143,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TENS.get(
self.integers_to_read[0][0], ""
)
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == 0:
# number like xy, read cardinal xy and return
wrd += self.CARDINAL_TENS.get(
Expand All @@ -146,7 +152,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_ONES.get(
self.integers_to_read[0][1], ""
)
return wrd
return "%s%s" % (pre_word, wrd)

if self.total_digits_outside_triplets == 1:
if self.order_of_last_zero_digit == 0:
Expand All @@ -156,7 +162,7 @@ def to_cardinal(self, value):
)
if self.integers_to_read[0][0] == "0":
return self.ZERO
return wrd
return "%s%s" % (pre_word, wrd)

if self.total_digits_outside_triplets == 0:
if self.order_of_last_zero_digit == 2:
Expand All @@ -165,7 +171,7 @@ def to_cardinal(self, value):
self.integers_to_read[0][0], ""
)
wrd += self.CARDINAL_HUNDRED[0]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == 1:
# number like xy0, read cardinal xy0 and return
wrd += self.HUNDREDS.get(
Expand All @@ -175,7 +181,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TENS.get(
self.integers_to_read[0][1], ""
)
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == 0:
# number like xyz, read cardinal xyz and return
wrd += self.HUNDREDS.get(
Expand All @@ -188,7 +194,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_ONES.get(
self.integers_to_read[0][2], ""
)
return wrd
return "%s%s" % (pre_word, wrd)

if self.total_triplets_to_read >= 2:
if self.total_digits_outside_triplets == 2:
Expand All @@ -202,7 +208,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == len(
self.integers_to_read[0]) - 2:
# number like xy and all 0s, read cardinal xy 0..0
Expand All @@ -216,7 +222,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit < len(
self.integers_to_read[0]) - 2:
# number like xy and others, read cardinal xy n..n
Expand Down Expand Up @@ -244,7 +250,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit < len(
self.integers_to_read[0]) - 1:
# number like x and others, read cardinal x n..n
Expand All @@ -268,7 +274,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == len(
self.integers_to_read[0]) - 2:
# number like xy0 and all 0s, read cardinal xy0 0..0
Expand All @@ -283,7 +289,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit == len(
self.integers_to_read[0]) - 3:
# number like xyz and all 0s, read cardinal xyz 0..0
Expand All @@ -299,7 +305,7 @@ def to_cardinal(self, value):
wrd += self.CARDINAL_TRIPLETS[
self.total_triplets_to_read - 1
]
return wrd
return "%s%s" % (pre_word, wrd)
if self.order_of_last_zero_digit < len(
self.integers_to_read[0]) - 3:
# number like xyz and all others, read cardinal xyz n..n
Expand Down Expand Up @@ -339,11 +345,11 @@ def to_cardinal(self, value):
last_read_digit_order) - 1:
if i == 1:
wrd += self.CARDINAL_HUNDRED[0]
return wrd
return "%s%s" % (pre_word, wrd)
elif i > 1:
wrd += self.CARDINAL_HUNDRED[0]
wrd += self.CARDINAL_TRIPLETS[i - 1]
return wrd
return "%s%s" % (pre_word, wrd)
else:
wrd += self.CARDINAL_HUNDRED[0]

Expand All @@ -357,14 +363,14 @@ def to_cardinal(self, value):
self.integers_to_read[0][
last_read_digit_order + 1], ""
)
return wrd
return "%s%s" % (pre_word, wrd)
elif i > 1:
wrd += self.CARDINAL_TENS.get(
self.integers_to_read[0][
last_read_digit_order + 1], ""
)
wrd += self.CARDINAL_TRIPLETS[i - 1]
return wrd
return "%s%s" % (pre_word, wrd)
else:
wrd += self.CARDINAL_TENS.get(
self.integers_to_read[0][
Expand All @@ -381,7 +387,7 @@ def to_cardinal(self, value):
self.integers_to_read[0][
last_read_digit_order + 2], ""
)
return wrd
return "%s%s" % (pre_word, wrd)
if i == 2:
if not self.integers_to_read[0][
last_read_digit_order:
Expand All @@ -398,14 +404,14 @@ def to_cardinal(self, value):
last_read_digit_order + 2], ""
)
wrd += self.CARDINAL_TRIPLETS[i - 1]
return wrd
return "%s%s" % (pre_word, wrd)
if i > 2:
wrd += self.CARDINAL_ONES.get(
self.integers_to_read[0][
last_read_digit_order + 2], ""
)
wrd += self.CARDINAL_TRIPLETS[i - 1]
return wrd
return "%s%s" % (pre_word, wrd)
else:
if not self.integers_to_read[0][
last_read_digit_order:
Expand Down Expand Up @@ -435,7 +441,7 @@ def to_cardinal(self, value):

wrd += self.CARDINAL_TRIPLETS[i - 1]

return wrd
return "%s%s" % (pre_word, wrd)

def to_cardinal_float(self, value):
self.to_splitnum(value)
Expand Down
7 changes: 6 additions & 1 deletion tests/test_tr.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,12 @@ def test_tr(self):
{"test": 10, "to": "ordinal_num", "expected": u"10uncu"},
{"test": 1, "to": "ordinal_num", "expected": u"1inci"},
{"test": 3, "to": "ordinal_num", "expected": u"3üncü"},
{"test": 6, "to": "ordinal_num", "expected": u"6ıncı"}
{"test": 6, "to": "ordinal_num", "expected": u"6ıncı"},
{"test": -5, "to": "cardinal", "expected": u"eksibeş"},
{"test": -55, "to": "cardinal", "expected": u"eksiellibeş"},
{"test": -576, "to": "cardinal",
"expected": u"eksibeşyüzyetmişaltı"},
{"test": -3, "to": "currency", "expected": u"eksiüçlira"},
]

for casedata in testcases:
Expand Down

0 comments on commit 931d71b

Please sign in to comment.