Add italian ordinals.

This commit is contained in:
Brett Anthoine
2016-07-18 11:27:51 +02:00
parent 08779b28b2
commit c9ecd07cbf
2 changed files with 28 additions and 1 deletions

View File

@@ -196,9 +196,22 @@ class Num2Word_IT(object):
pass pass
def to_ordinal(self,value): def to_ordinal(self,value):
raise NotImplementedError() if 0 <= value <= 10:
return ["primo", "secondo", "terzo", "quarto", "quinto", "sesto", "settimo", "ottavo", "nono", "decimo"][value - 1]
else:
as_word = self._toWords(value)
if as_word.endswith("dici"):
return re.sub("dici$", "dicesimo", as_word)
elif as_word.endswith("to"):
return re.sub("to$", "tesimo", as_word)
elif as_word.endswith("ta"):
return re.sub("ta$", "tesimo", as_word)
else:
return as_word + "simo"
n2w = Num2Word_IT() n2w = Num2Word_IT()
to_card = n2w.to_cardinal to_card = n2w.to_cardinal
to_ord = n2w.to_ordinal to_ord = n2w.to_ordinal
to_ordnum = n2w.to_ordinal_num to_ordnum = n2w.to_ordinal_num

View File

@@ -35,6 +35,7 @@ class Num2WordsITTest(TestCase):
(20,'venti'), (20,'venti'),
(21,'ventuno'), (21,'ventuno'),
(26,'ventisei'), (26,'ventisei'),
(28,'ventotto'),
(30,'trenta'), (30,'trenta'),
(31,'trentuno'), (31,'trentuno'),
(40,'quaranta'), (40,'quaranta'),
@@ -80,3 +81,16 @@ class Num2WordsITTest(TestCase):
for test in test_cases: for test in test_cases:
self.assertEqual(num2words(test[0], lang='it'), test[1]) self.assertEqual(num2words(test[0], lang='it'), test[1])
def test_ordinal(self):
test_cases = (
(1,'primo'),
(8,'ottavo'),
(12,'dodicesimo'),
(14,'quattordicesimo'),
(28,'ventottesimo'),
(100,'centesimo'),
)
for test in test_cases:
self.assertEqual(num2words(test[0], lang='it', ordinal=True), test[1])