added correct ordinal handling and more test cases

This commit is contained in:
Peter Nordstrom
2020-12-07 16:24:58 +01:00
parent 895af7dccf
commit e88f3d75e3
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): def to_ordinal(self, value):
self.verify_ordinal(value) self.verify_ordinal(value)
outwords = self.to_cardinal(value).split(" ") outwords = self.to_cardinal(value).split(" ")
lastwords = outwords[-1].split("-") lastword = outwords[-1]
lastword = lastwords[-1].lower() # lastword = lastwords[-1].lower()
ending_length = 0
try: 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: except KeyError:
if lastword[-2:] == "tio":
lastword = lastword + "onde"
else:
lastword += "de" lastword += "de"
lastwords[-1] = self.title(lastword) lastword_first_part = self.title(lastword)[:-ending_length]
outwords[-1] = "".join(lastwords) lastword_correct = lastword_first_part + lastword_ending
outwords[-1] = lastword_correct
return " ".join(outwords) return " ".join(outwords)
def to_ordinal_num(self, value): def to_ordinal_num(self, value):

View File

@@ -24,11 +24,11 @@ from num2words import num2words
class Num2WordsSVTest(TestCase): class Num2WordsSVTest(TestCase):
def test_ordinal(self): 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(1, to="ordinal", lang="sv"), "första")
self.assertEqual(num2words(5, to="ordinal", lang="sv"), "femte") 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): def test_cardinal(self):
self.assertEqual(num2words(0, to="cardinal", lang="sv"), "noll") self.assertEqual(num2words(0, to="cardinal", lang="sv"), "noll")