diff --git a/num2words/lang_PL.py b/num2words/lang_PL.py index 376b0a10..fb4e8289 100644 --- a/num2words/lang_PL.py +++ b/num2words/lang_PL.py @@ -221,6 +221,10 @@ def last_fragment_to_ordinal(self, last, words, level): def to_ordinal(self, number): if number % 1 != 0: raise NotImplementedError() + if number == 0: + # splitbyx("0") yields a single zero fragment; the loop below would + # pop it and then index an empty list, so handle zero explicitly. + return "zerowy" words = [] fragments = list(splitbyx(str(number), 3)) level = 0 diff --git a/num2words/lang_UK.py b/num2words/lang_UK.py index 188d7ced..6b6e7977 100644 --- a/num2words/lang_UK.py +++ b/num2words/lang_UK.py @@ -1043,6 +1043,11 @@ def last_fragment_to_ordinal(last, words, level): def to_ordinal(self, number): self.verify_ordinal(number) + if number == 0: + # splitbyx("0") yields a single zero fragment; the loop below would + # pop it and then index an empty list, so handle zero explicitly. + return "нульовий" + words = [] fragments = list(splitbyx(str(number), 3)) level = 0 diff --git a/tests/test_pl.py b/tests/test_pl.py index 08ef0394..beb77ffc 100644 --- a/tests/test_pl.py +++ b/tests/test_pl.py @@ -93,6 +93,7 @@ def test_cardinal(self): ) def test_to_ordinal(self): + self.assertEqual(num2words(0, lang='pl', to='ordinal'), "zerowy") self.assertEqual(num2words(100, lang='pl', to='ordinal'), "setny") self.assertEqual( num2words(101, lang='pl', to='ordinal'), "sto pierwszy") diff --git a/tests/test_uk.py b/tests/test_uk.py index 4dcd7cb1..5568a91f 100644 --- a/tests/test_uk.py +++ b/tests/test_uk.py @@ -700,6 +700,7 @@ ) TEST_CASES_ORDINAL = ( + (0, "нульовий"), (1, "перший"), (2, "другий"), (3, "третій"),