From e88f3d75e35bda8a5d7386fe231c72290258d202 Mon Sep 17 00:00:00 2001 From: Peter Nordstrom Date: Mon, 7 Dec 2020 16:24:58 +0100 Subject: [PATCH] added correct ordinal handling and more test cases --- num2words/lang_SV.py | 22 +++++++++++++--------- tests/test_sv.py | 6 +++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/num2words/lang_SV.py b/num2words/lang_SV.py index 215c196..12ba9ae 100644 --- a/num2words/lang_SV.py +++ b/num2words/lang_SV.py @@ -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] - except KeyError: - if lastword[-2:] == "tio": - lastword = lastword + "onde" - else: + lastword_ending = self.ords[lastword[-4:]] + ending_length = 4 + except: + try: + lastword_ending = self.ords[lastword[-3:]] + ending_length = 3 + except KeyError: 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): diff --git a/tests/test_sv.py b/tests/test_sv.py index fa3d48d..e4ce466 100644 --- a/tests/test_sv.py +++ b/tests/test_sv.py @@ -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")