added correct ordinal handling and more test cases

This commit is contained in:
Peter Nordstrom
2020-12-07 16:24:58 +01:00
committed by Willem Van Onsem
parent 1b35e7fe58
commit a35effbd1b
2 changed files with 16 additions and 12 deletions

View File

@@ -85,17 +85,21 @@ class Num2Word_SV(lang_EU.Num2Word_EU):
def to_ordinal(self, value):
self.verify_ordinal(value)
outwords = self.to_cardinal(value).split(" ")
lastwords = outwords[-1].split("-")
lastword = lastwords[-1].lower()
lastword = outwords[-1]
# lastword = lastwords[-1].lower()
ending_length = 0
try:
lastword = self.ords[lastword]
lastword_ending = self.ords[lastword[-4:]]
ending_length = 4
except:
try:
lastword_ending = self.ords[lastword[-3:]]
ending_length = 3
except KeyError:
if lastword[-2:] == "tio":
lastword = lastword + "onde"
else:
lastword += "de"
lastwords[-1] = self.title(lastword)
outwords[-1] = "".join(lastwords)
lastword_first_part = self.title(lastword)[:-ending_length]
lastword_correct = lastword_first_part + lastword_ending
outwords[-1] = lastword_correct
return " ".join(outwords)
def to_ordinal_num(self, value):

View File

@@ -24,11 +24,11 @@ from num2words import num2words
class Num2WordsSVTest(TestCase):
def test_ordinal(self):
pass
self.assertEqual(num2words(1435, to="ordinal", lang="sv"), "etttusen fyrahundratrettiofemte")
self.assertEqual(num2words(32, to="ordinal", lang="sv"), "trettioandra")
self.assertEqual(num2words(1, to="ordinal", lang="sv"), "första")
self.assertEqual(num2words(5, to="ordinal", lang="sv"), "femte")
self.assertEqual(num2words(32, to="ordinal", lang="sv"), "trettioandra")
self.assertEqual(num2words(10, to="ordinal", lang="sv"), "tionde")
def test_cardinal(self):
self.assertEqual(num2words(0, to="cardinal", lang="sv"), "noll")