From e88753046274cdef54ab86012313ba20a217036f Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Tue, 21 May 2019 18:15:38 +0200 Subject: [PATCH 1/7] Telugu Language num2words file --- num2words/__init__.py | 5 ++-- num2words/lang_TE.py | 56 +++++++++++++++++++++++++++++++++++++++++++ tests/test_te.py | 48 +++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 num2words/lang_TE.py create mode 100644 tests/test_te.py diff --git a/num2words/__init__.py b/num2words/__init__.py index b1a266b..002b7bf 100644 --- a/num2words/__init__.py +++ b/num2words/__init__.py @@ -22,7 +22,7 @@ from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN, lang_FR_CH, lang_FR_DZ, lang_HE, lang_ID, lang_IT, lang_JA, lang_KN, lang_KO, lang_LT, lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL, lang_SR, - lang_TH, lang_TR, lang_UK, lang_VI) + lang_TH, lang_TR, lang_UK, lang_VI, lang_TE) CONVERTER_CLASSES = { 'ar': lang_AR.Num2Word_AR(), @@ -59,7 +59,8 @@ CONVERTER_CLASSES = { 'th': lang_TH.Num2Word_TH(), 'tr': lang_TR.Num2Word_TR(), 'nl': lang_NL.Num2Word_NL(), - 'uk': lang_UK.Num2Word_UK() + 'uk': lang_UK.Num2Word_UK(), + 'te': lang_TE.Num2Word_TE() } diff --git a/num2words/lang_TE.py b/num2words/lang_TE.py new file mode 100644 index 0000000..1bdbe48 --- /dev/null +++ b/num2words/lang_TE.py @@ -0,0 +1,56 @@ +from __future__ import unicode_literals + +from .base import Num2Word_Base + + +class Num2Word_TE(Num2Word_Base): + def set_high_numwords(self, high): + for n, word in self.high_numwords: + self.cards[10 ** n] = word + + def setup(self): + self.low_numwords = [ + + "తొంభై తొమ్మిది", "తొంభై ఎనిమిది", "తొంభై ఏడు", "తొంభై ఆరు", "తొంభై అయిదు", "తొంభై నాలుగు ", "తొంభై మూడు", "తొంభై రెండు", "తొంభై ఒకటి", "తొంభై ", "ఎనభై తొమ్మిది", "ఎనభై ఎనిమిది", "ఎనభై ఏడు", "ఎనభై ఆరు", "ఎనభై అయిదు", + "ఎనభై నాలుగు", "ఎనభై మూడు", "ఎనభై రెండు" , "ఎనభై ఒకటి", "ఎనభై" ,"డెబ్బై తొమ్మిది" , "డెబ్బై ఎనిమిది" , "డెబ్బై ఏడు" , "డెబ్బై ఆరు" , "డెబ్బై అయిదు" , "డెబ్బై నాలుగు" ,"డెబ్బై మూడు", "డెబ్బై రెండు", "డెబ్బై ఒకటి" ,"డెబ్బై" , + "అరవై తొమ్మిది ", "అరవై ఎనిమిది" , "అరవై ఏడు " , "అరవై ఆరు ","అరవై అయిదు ", "అరవై నాలుగు ", "అరవై మూడు ", "అరవై రెండు ", "అరవై ఒకటి" , "అరవై " , "యాభై తొమ్మిది", "యాభై ఎనిమిది" , "యాభై ఏడు", "యాభై ఆరు", + "యాభై అయిదు", "యాభై నాలుగు", "యాభై మూడు" , "యాభై రెండు", "యాభై ఒకటి", "యాభై " , "నలభై తొమ్మిది" ,"నలభై ఎనిమిది", "నలభై ఏడు", "నలభై ఆరు", "నలభై అయిదు" , "నలభై నాలుగు", "నలభై మూడు", "నలభై రెండు" , + "నలభై ఒకటి" , "నలభై" , "ముప్పై తొమ్మిది", "ముప్పై ఎనిమిది", "ముప్పై ఏడు", "ముప్పై ఆరు", "ముప్పై ఐదు", "ముప్పై నాలుగు", "ముప్పై మూడు", "ముప్పై రెండు", "ముప్పై ఒకటి", "ముప్పై", "ఇరవై తొమ్మిది", "ఇరవై ఎనిమిది", "ఇరవై ఏడు", + "ఇరవై ఆరు", "ఇరవై అయిదు", "ఇరవై నాలుగు", "ఇరవై మూడు", "ఇరవై రెండు", "ఇరవై ఒకటి", "ఇరవై", "పందొమ్మిది", "పధ్ధెనిమిది", "పదిహేడు", "పదహారు", "పదునయిదు", "పధ్నాలుగు", "పదమూడు", "పన్నెండు", "పదకొండు", "పది", "తొమ్మిది", + "ఎనిమిది", "ఏడు", "ఆరు", "అయిదు","నాలుగు", "మూడు", "రెండు", "ఒకటి", "సున్న" + ] + + self.mid_numwords = [(100, "వందల")] + + self.high_numwords = [(7, "కోటి" ), (5, "లక్షల"), (3, "వేల" )] + + self.pointword = "బిందువు " + + self.modifiers = [ + " ్ ","ా", " ి ", " ీ "," ు "," ూ " ," ృ "," ౄ " ," ె " ," ే " ," ై " ," ొ" ," ో " ," ౌ " ," ఁ " ," ం " ," ః " + ] + + def merge(self, lpair, rpair): + ltext, lnum = lpair + rtext, rnum = rpair + if lnum == 1 and rnum < 100: + return (rtext, rnum) + elif 100 > lnum > rnum: + return ("%s-%s" % (ltext, rtext), lnum + rnum) + elif lnum >= 100 > rnum: + return ("%s %s" % (ltext, rtext), lnum + rnum) + elif rnum > lnum: + return ("%s %s" % (ltext, rtext), lnum * rnum) + return ("%s %s" % (ltext, rtext), lnum + rnum) + + def to_ordinal_num(self, value): + self.verify_ordinal(value) + return "%s%s" % (value, self.to_ordinal(value)) + + def to_ordinal(self, value): + self.verify_ordinal(value) + outwords = self.to_cardinal(value) + if outwords[-1] in self.modifiers: + outwords = outwords[:-1] + ordinal_num = outwords + "వ " + return ordinal_num diff --git a/tests/test_te.py b/tests/test_te.py new file mode 100644 index 0000000..d74c827 --- /dev/null +++ b/tests/test_te.py @@ -0,0 +1,48 @@ +from unittest import TestCase + +from num2words import num2words + + +class Num2WordsTETest(TestCase): + def test_numbers(self): + self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు ") + self.assertEqual(num2words(893, lang="te"), u"ఎనిమిది వందల తొంబై మూడు") + self.assertEqual( + num2words(1729, lang="te"), u"ఒక వేయి ఏడు వందల ఇరవై తొమ్మిది ") + self.assertEqual(num2words(123, lang="te"), u"ఒక వంద ఇరవై మూడు") + self.assertEqual(num2words(32211, lang="te"), + u"ముప్పై రెండు వేల రెండు వందల పదకొండు") + + def test_cardinal_for_float_number(self): + self.assertEqual(num2words(3.14, lang="te"), u"మూడు బిందువు ఒకటి నాలుగు ") + self.assertEqual(num2words(1.61803, lang="te"), + u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్నా మూడు ") + + def test_ordinal(self): + self.assertEqual( + num2words(1, lang='te', to='ordinal'), + u'ఒకటవ ' + ) + self.assertEqual( + num2words(22, lang='te', to='ordinal'), + u'ఇరవై రెండవ ' + ) + self.assertEqual( + num2words(12, lang='te', to='ordinal'), + u'పన్నెండవ' + ) + self.assertEqual( + num2words(130, lang='te', to='ordinal'), + u'ఒక వంద ముప్పయ్యవ ' + ) + self.assertEqual( + num2words(1003, lang='te', to='ordinal'), + u'ఒక వెయ్యి మూడవ' + ) + + def test_ordinal_num(self): + self.assertEqual(num2words(2, lang="te", ordinal=True), u"రెండవ") + self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదవ ") + self.assertEqual(num2words(16, lang="te", ordinal=True), u"పదహారవ ") + self.assertEqual(num2words(113, lang="te", ordinal=True), + u"ఒక వంద పదమూడవ") From 6b3d3033321eb7bb845711e3b246474d1222d35d Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Thu, 13 Jun 2019 17:26:17 +0200 Subject: [PATCH 2/7] Add Telugu Num2Words. --- num2words/__init__.py | 2 +- num2words/lang_TE.py | 54 ++++++++++++++++++++++++++++++++----------- tests/test_te.py | 23 +++++++++++------- 3 files changed, 57 insertions(+), 22 deletions(-) diff --git a/num2words/__init__.py b/num2words/__init__.py index 002b7bf..5745102 100644 --- a/num2words/__init__.py +++ b/num2words/__init__.py @@ -22,7 +22,7 @@ from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN, lang_FR_CH, lang_FR_DZ, lang_HE, lang_ID, lang_IT, lang_JA, lang_KN, lang_KO, lang_LT, lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL, lang_SR, - lang_TH, lang_TR, lang_UK, lang_VI, lang_TE) + lang_TE, lang_TH, lang_TR, lang_UK, lang_VI) CONVERTER_CLASSES = { 'ar': lang_AR.Num2Word_AR(), diff --git a/num2words/lang_TE.py b/num2words/lang_TE.py index 1bdbe48..819ebcd 100644 --- a/num2words/lang_TE.py +++ b/num2words/lang_TE.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + from __future__ import unicode_literals from .base import Num2Word_Base @@ -10,25 +12,51 @@ class Num2Word_TE(Num2Word_Base): def setup(self): self.low_numwords = [ - - "తొంభై తొమ్మిది", "తొంభై ఎనిమిది", "తొంభై ఏడు", "తొంభై ఆరు", "తొంభై అయిదు", "తొంభై నాలుగు ", "తొంభై మూడు", "తొంభై రెండు", "తొంభై ఒకటి", "తొంభై ", "ఎనభై తొమ్మిది", "ఎనభై ఎనిమిది", "ఎనభై ఏడు", "ఎనభై ఆరు", "ఎనభై అయిదు", - "ఎనభై నాలుగు", "ఎనభై మూడు", "ఎనభై రెండు" , "ఎనభై ఒకటి", "ఎనభై" ,"డెబ్బై తొమ్మిది" , "డెబ్బై ఎనిమిది" , "డెబ్బై ఏడు" , "డెబ్బై ఆరు" , "డెబ్బై అయిదు" , "డెబ్బై నాలుగు" ,"డెబ్బై మూడు", "డెబ్బై రెండు", "డెబ్బై ఒకటి" ,"డెబ్బై" , - "అరవై తొమ్మిది ", "అరవై ఎనిమిది" , "అరవై ఏడు " , "అరవై ఆరు ","అరవై అయిదు ", "అరవై నాలుగు ", "అరవై మూడు ", "అరవై రెండు ", "అరవై ఒకటి" , "అరవై " , "యాభై తొమ్మిది", "యాభై ఎనిమిది" , "యాభై ఏడు", "యాభై ఆరు", - "యాభై అయిదు", "యాభై నాలుగు", "యాభై మూడు" , "యాభై రెండు", "యాభై ఒకటి", "యాభై " , "నలభై తొమ్మిది" ,"నలభై ఎనిమిది", "నలభై ఏడు", "నలభై ఆరు", "నలభై అయిదు" , "నలభై నాలుగు", "నలభై మూడు", "నలభై రెండు" , - "నలభై ఒకటి" , "నలభై" , "ముప్పై తొమ్మిది", "ముప్పై ఎనిమిది", "ముప్పై ఏడు", "ముప్పై ఆరు", "ముప్పై ఐదు", "ముప్పై నాలుగు", "ముప్పై మూడు", "ముప్పై రెండు", "ముప్పై ఒకటి", "ముప్పై", "ఇరవై తొమ్మిది", "ఇరవై ఎనిమిది", "ఇరవై ఏడు", - "ఇరవై ఆరు", "ఇరవై అయిదు", "ఇరవై నాలుగు", "ఇరవై మూడు", "ఇరవై రెండు", "ఇరవై ఒకటి", "ఇరవై", "పందొమ్మిది", "పధ్ధెనిమిది", "పదిహేడు", "పదహారు", "పదునయిదు", "పధ్నాలుగు", "పదమూడు", "పన్నెండు", "పదకొండు", "పది", "తొమ్మిది", - "ఎనిమిది", "ఏడు", "ఆరు", "అయిదు","నాలుగు", "మూడు", "రెండు", "ఒకటి", "సున్న" - ] + "తొంభై తొమ్మిది", "తొంభై ఎనిమిది", "తొంభై ఏడు", "తొంభై ఆరు", + "తొంభై అయిదు", "తొంభై నాలుగు ", "తొంభై మూడు", "తొంభై రెండు", + "తొంభై ఒకటి", "తొంభై ", "ఎనభై తొమ్మిది", "ఎనభై ఎనిమిది", + "ఎనభై ఏడు", "ఎనభై ఆరు", "ఎనభై అయిదు", "ఎనభై నాలుగు", + "ఎనభై మూడు", "ఎనభై రెండు", "ఎనభై ఒకటి", "ఎనభై", + "డెబ్బై తొమ్మిది", "డెబ్బై ఎనిమిది", "డెబ్బై ఏడు", + "డెబ్బై ఆరు", "డెబ్బై అయిదు", "డెబ్బై నాలుగు", + "డెబ్బై మూడు", "డెబ్బై రెండు", + "డెబ్బై ఒకటి", "డెబ్బై", "అరవై తొమ్మిది ", "అరవై ఎనిమిది", + "అరవై ఏడు ", "అరవై ఆరు ", "అరవై అయిదు ", "అరవై నాలుగు ", + "అరవై మూడు ", "అరవై రెండు ", + "అరవై ఒకటి", "అరవై ", + "యాభై తొమ్మిది", "యాభై ఎనిమిది", + "యాభై ఏడు", "యాభై ఆరు", + "యాభై అయిదు", "యాభై నాలుగు", + "యాభై మూడు", "యాభై రెండు", + "యాభై ఒకటి", "యాభై ", + "నలభై తొమ్మిది", "నలభై ఎనిమిది", "నలభై ఏడు", + "నలభై ఆరు", "నలభై అయిదు", + "నలభై నాలుగు", "నలభై మూడు", "నలభై రెండు", + "నలభై ఒకటి", "నలభై", "ముప్పై తొమ్మిది", + "ముప్పై ఎనిమిది", "ముప్పై ఏడు", "ముప్పై ఆరు", "ముప్పై ఐదు", + "ముప్పై నాలుగు", "ముప్పై మూడు", + "ముప్పై రెండు", "ముప్పై ఒకటి", "ముప్పై", "ఇరవై తొమ్మిది", + "ఇరవై ఎనిమిది", "ఇరవై ఏడు", + "ఇరవై ఆరు", "ఇరవై అయిదు", "ఇరవై నాలుగు", + "ఇరవై మూడు", "ఇరవై రెండు", "ఇరవై ఒకటి", "ఇరవై", + "పందొమ్మిది", "పధ్ధెనిమిది", "పదిహేడు", "పదహారు", + "పదునయిదు", "పధ్నాలుగు", + "పదమూడు", "పన్నెండు", "పదకొండు", "పది", "తొమ్మిది", + "ఎనిమిది", "ఏడు", "ఆరు", "అయిదు", + "నాలుగు", "మూడు", "రెండు", "ఒకటి", "సున్న" + ] self.mid_numwords = [(100, "వందల")] - self.high_numwords = [(7, "కోటి" ), (5, "లక్షల"), (3, "వేల" )] + self.high_numwords = [(7, "కోటి"), (5, "లక్షల"), (3, "వేల")] self.pointword = "బిందువు " - self.modifiers = [ - " ్ ","ా", " ి ", " ీ "," ు "," ూ " ," ృ "," ౄ " ," ె " ," ే " ," ై " ," ొ" ," ో " ," ౌ " ," ఁ " ," ం " ," ః " - ] + self.modifiers = [ + " ్ ", "ా", " ి ", " ీ ", " ు ", " ూ ", " ృ ", + " ౄ ", " ె ", " ే ", " ై ", " ొ", " ో ", + " ౌ ", " ఁ ", " ం ", " ః " + ] def merge(self, lpair, rpair): ltext, lnum = lpair diff --git a/tests/test_te.py b/tests/test_te.py index d74c827..fc806d5 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + from unittest import TestCase from num2words import num2words @@ -5,23 +7,26 @@ from num2words import num2words class Num2WordsTETest(TestCase): def test_numbers(self): - self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు ") + self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు") self.assertEqual(num2words(893, lang="te"), u"ఎనిమిది వందల తొంబై మూడు") self.assertEqual( num2words(1729, lang="te"), u"ఒక వేయి ఏడు వందల ఇరవై తొమ్మిది ") self.assertEqual(num2words(123, lang="te"), u"ఒక వంద ఇరవై మూడు") self.assertEqual(num2words(32211, lang="te"), - u"ముప్పై రెండు వేల రెండు వందల పదకొండు") + u"ముప్పై రెండు వేల రెండు వందల పదకొండు") def test_cardinal_for_float_number(self): - self.assertEqual(num2words(3.14, lang="te"), u"మూడు బిందువు ఒకటి నాలుగు ") + self.assertEqual( + num2words(3.14, lang="te"), + u"మూడుబిందువు ఒకటి నాలుగు" + ) self.assertEqual(num2words(1.61803, lang="te"), u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్నా మూడు ") def test_ordinal(self): self.assertEqual( num2words(1, lang='te', to='ordinal'), - u'ఒకటవ ' + u'ఒకటివ ' ) self.assertEqual( num2words(22, lang='te', to='ordinal'), @@ -41,8 +46,10 @@ class Num2WordsTETest(TestCase): ) def test_ordinal_num(self): - self.assertEqual(num2words(2, lang="te", ordinal=True), u"రెండవ") + self.assertEqual( + num2words(2, lang="te", ordinal=True), u"రెండవ") self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదవ ") - self.assertEqual(num2words(16, lang="te", ordinal=True), u"పదహారవ ") - self.assertEqual(num2words(113, lang="te", ordinal=True), - u"ఒక వంద పదమూడవ") + self.assertEqual( + num2words(16, lang="te", ordinal=True), u"పదహారవ ") + self.assertEqual( + num2words(113, lang="te", ordinal=True), u"ఒక వంద పదమూడవ") From a2900faccf4922cf6c0be863fe0ddb4292ec40b8 Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Thu, 4 Jul 2019 17:43:00 +0200 Subject: [PATCH 3/7] Final telugu num2words. --- num2words/lang_KN.py | 6 +- num2words/lang_TE.py | 160 ++++++++++++++++++++++++++++++++----------- tests/test_te.py | 75 ++++++++++---------- 3 files changed, 160 insertions(+), 81 deletions(-) diff --git a/num2words/lang_KN.py b/num2words/lang_KN.py index 430c52f..3bc1cca 100644 --- a/num2words/lang_KN.py +++ b/num2words/lang_KN.py @@ -17,13 +17,13 @@ from __future__ import unicode_literals -from .base import Num2Word_Base +from .lang_EU import Num2Word_EU -class Num2Word_KN(Num2Word_Base): +class Num2Word_KN(Num2Word_EU): def set_high_numwords(self, high): for n, word in self.high_numwords: - self.cards[10 ** n] = word + self.cards[10**n] = word def setup(self): self.low_numwords = [ diff --git a/num2words/lang_TE.py b/num2words/lang_TE.py index 819ebcd..54fb1fb 100644 --- a/num2words/lang_TE.py +++ b/num2words/lang_TE.py @@ -2,48 +2,116 @@ from __future__ import unicode_literals -from .base import Num2Word_Base +from .lang_EU import Num2Word_EU -class Num2Word_TE(Num2Word_Base): +class Num2Word_TE(Num2Word_EU): def set_high_numwords(self, high): for n, word in self.high_numwords: - self.cards[10 ** n] = word + self.cards[10**n] = word def setup(self): self.low_numwords = [ - "తొంభై తొమ్మిది", "తొంభై ఎనిమిది", "తొంభై ఏడు", "తొంభై ఆరు", - "తొంభై అయిదు", "తొంభై నాలుగు ", "తొంభై మూడు", "తొంభై రెండు", - "తొంభై ఒకటి", "తొంభై ", "ఎనభై తొమ్మిది", "ఎనభై ఎనిమిది", - "ఎనభై ఏడు", "ఎనభై ఆరు", "ఎనభై అయిదు", "ఎనభై నాలుగు", - "ఎనభై మూడు", "ఎనభై రెండు", "ఎనభై ఒకటి", "ఎనభై", - "డెబ్బై తొమ్మిది", "డెబ్బై ఎనిమిది", "డెబ్బై ఏడు", - "డెబ్బై ఆరు", "డెబ్బై అయిదు", "డెబ్బై నాలుగు", - "డెబ్బై మూడు", "డెబ్బై రెండు", - "డెబ్బై ఒకటి", "డెబ్బై", "అరవై తొమ్మిది ", "అరవై ఎనిమిది", - "అరవై ఏడు ", "అరవై ఆరు ", "అరవై అయిదు ", "అరవై నాలుగు ", - "అరవై మూడు ", "అరవై రెండు ", - "అరవై ఒకటి", "అరవై ", - "యాభై తొమ్మిది", "యాభై ఎనిమిది", - "యాభై ఏడు", "యాభై ఆరు", - "యాభై అయిదు", "యాభై నాలుగు", - "యాభై మూడు", "యాభై రెండు", - "యాభై ఒకటి", "యాభై ", - "నలభై తొమ్మిది", "నలభై ఎనిమిది", "నలభై ఏడు", - "నలభై ఆరు", "నలభై అయిదు", - "నలభై నాలుగు", "నలభై మూడు", "నలభై రెండు", - "నలభై ఒకటి", "నలభై", "ముప్పై తొమ్మిది", - "ముప్పై ఎనిమిది", "ముప్పై ఏడు", "ముప్పై ఆరు", "ముప్పై ఐదు", - "ముప్పై నాలుగు", "ముప్పై మూడు", - "ముప్పై రెండు", "ముప్పై ఒకటి", "ముప్పై", "ఇరవై తొమ్మిది", - "ఇరవై ఎనిమిది", "ఇరవై ఏడు", - "ఇరవై ఆరు", "ఇరవై అయిదు", "ఇరవై నాలుగు", - "ఇరవై మూడు", "ఇరవై రెండు", "ఇరవై ఒకటి", "ఇరవై", - "పందొమ్మిది", "పధ్ధెనిమిది", "పదిహేడు", "పదహారు", - "పదునయిదు", "పధ్నాలుగు", - "పదమూడు", "పన్నెండు", "పదకొండు", "పది", "తొమ్మిది", - "ఎనిమిది", "ఏడు", "ఆరు", "అయిదు", - "నాలుగు", "మూడు", "రెండు", "ఒకటి", "సున్న" + "తొంభై తొమ్మిది", + "తొంభై ఎనిమిది", + "తొంభై ఏడు", + "తొంభై ఆరు", + "తొంభై అయిదు", + "తొంభై నాలుగు", + "తొంభై మూడు", + "తొంభై రెండు", + "తొంభై ఒకటి", + "తొంభై", + "ఎనభై తొమ్మిది", + "ఎనభై ఎనిమిది", + "ఎనభై ఏడు", + "ఎనభై ఆరు", + "ఎనభై అయిదు", + "ఎనభై నాలుగు", + "ఎనభై మూడు", + "ఎనభై రెండు", + "ఎనభై ఒకటి", + "ఎనభై", + "డెబ్బై తొమ్మిది", + "డెబ్బై ఎనిమిది", + "డెబ్బై ఏడు", + "డెబ్బై ఆరు", + "డెబ్బై అయిదు", + "డెబ్బై నాలుగు", + "డెబ్బై మూడు", + "డెబ్బై రెండు", + "డెబ్బై ఒకటి", + "డెబ్బై", + "అరవై తొమ్మిది", + "అరవై ఎనిమిది", + "అరవై ఏడు", + "అరవై ఆరు", + "అరవై అయిదు", + "అరవై నాలుగు", + "అరవై మూడు", + "అరవై రెండు", + "అరవై ఒకటి", + "అరవై", + "యాభై తొమ్మిది", + "యాభై ఎనిమిది", + "యాభై ఏడు", + "యాభై ఆరు", + "యాభై అయిదు", + "యాభై నాలుగు", + "యాభై మూడు", + "యాభై రెండు", + "యాభై ఒకటి", + "యాభై ", + "నలభై తొమ్మిది", + "నలభై ఎనిమిది", + "నలభై ఏడు", + "నలభై ఆరు", + "నలభై అయిదు", + "నలభై నాలుగు", + "నలభై మూడు", + "నలభై రెండు", + "నలభై ఒకటి", + "నలభై", + "ముప్పై తొమ్మిది", + "ముప్పై ఎనిమిది", + "ముప్పై ఏడు", + "ముప్పై ఆరు", + "ముప్పై ఐదు", + "ముప్పై నాలుగు", + "ముప్పై మూడు", + "ముప్పై రెండు", + "ముప్పై ఒకటి", + "ముప్పై", + "ఇరవై తొమ్మిది", + "ఇరవై ఎనిమిది", + "ఇరవై ఏడు", + "ఇరవై ఆరు", + "ఇరవై అయిదు", + "ఇరవై నాలుగు", + "ఇరవై మూడు", + "ఇరవై రెండు", + "ఇరవై ఒకటి", + "ఇరవై", + "పందొమ్మిది", + "పధ్ధెనిమిది", + "పదిహేడు", + "పదహారు", + "పదునయిదు", + "పధ్నాలుగు", + "పదమూడు", + "పన్నెండు", + "పదకొండు", + "పది", + "తొమ్మిది", + "ఎనిమిది", + "ఏడు", + "ఆరు", + "అయిదు", + "నాలుగు", + "మూడు", + "రెండు", + "ఒకటి", + "సున్న", ] self.mid_numwords = [(100, "వందల")] @@ -53,9 +121,23 @@ class Num2Word_TE(Num2Word_Base): self.pointword = "బిందువు " self.modifiers = [ - " ్ ", "ా", " ి ", " ీ ", " ు ", " ూ ", " ృ ", - " ౄ ", " ె ", " ే ", " ై ", " ొ", " ో ", - " ౌ ", " ఁ ", " ం ", " ః " + " ్ ", + "ా ", + " ి ", + " ీ ", + " ు ", + " ూ ", + " ృ ", + " ౄ ", + " ె ", + " ే ", + " ై ", + " ొ", + " ో ", + " ౌ ", + " ఁ ", + " ం ", + " ః ", ] def merge(self, lpair, rpair): @@ -80,5 +162,5 @@ class Num2Word_TE(Num2Word_Base): outwords = self.to_cardinal(value) if outwords[-1] in self.modifiers: outwords = outwords[:-1] - ordinal_num = outwords + "వ " + ordinal_num = outwords + "వ" return ordinal_num diff --git a/tests/test_te.py b/tests/test_te.py index fc806d5..bd804b1 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -1,4 +1,19 @@ # -*- coding: utf-8 -*- +# Copyright (c) 2003, Taro Ogawa. All Rights Reserved. +# Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved. + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA from unittest import TestCase @@ -7,49 +22,31 @@ from num2words import num2words class Num2WordsTETest(TestCase): def test_numbers(self): - self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు") - self.assertEqual(num2words(893, lang="te"), u"ఎనిమిది వందల తొంబై మూడు") - self.assertEqual( - num2words(1729, lang="te"), u"ఒక వేయి ఏడు వందల ఇరవై తొమ్మిది ") - self.assertEqual(num2words(123, lang="te"), u"ఒక వంద ఇరవై మూడు") - self.assertEqual(num2words(32211, lang="te"), - u"ముప్పై రెండు వేల రెండు వందల పదకొండు") + self.assertEqual(num2words(66, lang="te"), u"అరవై ఆరు") + self.assertEqual(num2words(1734, lang="te"), + u"ఒకటి వేల ఏడు వందల ముప్పై నాలుగు") + self.assertEqual(num2words(134, lang="te"), + u"ఒకటి వందల ముప్పై నాలుగు") + self.assertEqual(num2words(54411, lang="te"), + u"యాభై నాలుగు వేల నాలుగు వందల పదకొండు") def test_cardinal_for_float_number(self): - self.assertEqual( - num2words(3.14, lang="te"), - u"మూడుబిందువు ఒకటి నాలుగు" - ) self.assertEqual(num2words(1.61803, lang="te"), - u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్నా మూడు ") + u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్న మూడు") def test_ordinal(self): - self.assertEqual( - num2words(1, lang='te', to='ordinal'), - u'ఒకటివ ' - ) - self.assertEqual( - num2words(22, lang='te', to='ordinal'), - u'ఇరవై రెండవ ' - ) - self.assertEqual( - num2words(12, lang='te', to='ordinal'), - u'పన్నెండవ' - ) - self.assertEqual( - num2words(130, lang='te', to='ordinal'), - u'ఒక వంద ముప్పయ్యవ ' - ) - self.assertEqual( - num2words(1003, lang='te', to='ordinal'), - u'ఒక వెయ్యి మూడవ' - ) + self.assertEqual(num2words(1, lang='te', to='ordinal'), u"ఒకటివ") + self.assertEqual(num2words(23, lang='te', to='ordinal'), + u"ఇరవై మూడువ") + self.assertEqual(num2words(12, lang='te', to='ordinal'), u"పన్నెండువ") + self.assertEqual(num2words(130, lang='te', to='ordinal'), + u"ఒకటి వందల ముప్పైవ") + self.assertEqual(num2words(1003, lang='te', to='ordinal'), + u"ఒకటి వేల మూడువ") def test_ordinal_num(self): - self.assertEqual( - num2words(2, lang="te", ordinal=True), u"రెండవ") - self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదవ ") - self.assertEqual( - num2words(16, lang="te", ordinal=True), u"పదహారవ ") - self.assertEqual( - num2words(113, lang="te", ordinal=True), u"ఒక వంద పదమూడవ") + self.assertEqual(num2words(3, lang="te", ordinal=True), u"మూడువ") + self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదువ") + self.assertEqual(num2words(16, lang="te", ordinal=True), u"పదహారువ") + self.assertEqual(num2words(113, lang="te", ordinal=True), + u"ఒకటి వందల పదమూడువ") From 607e270cadf1b41368678fbe4dc3c11eab8ba44b Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Wed, 17 Jul 2019 10:59:07 +0200 Subject: [PATCH 4/7] correction for telugu test case --- tests/test_te.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_te.py b/tests/test_te.py index bd804b1..620209e 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -33,6 +33,9 @@ class Num2WordsTETest(TestCase): def test_cardinal_for_float_number(self): self.assertEqual(num2words(1.61803, lang="te"), u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్న మూడు") + + self.assertEqual(num2words(34.876, lang="te"), + u"ముప్పై నాలుగు బిందువు ఎనిమిది ఏడు ఆరు") def test_ordinal(self): self.assertEqual(num2words(1, lang='te', to='ordinal'), u"ఒకటివ") From 02830125325a05c4a4c204369b61724a9cf0158a Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Wed, 17 Jul 2019 11:50:25 +0200 Subject: [PATCH 5/7] 2nd correction for telugu test case and lang_TE --- num2words/lang_TE.py | 9 ++++++--- tests/test_te.py | 7 +++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/num2words/lang_TE.py b/num2words/lang_TE.py index 54fb1fb..49d8149 100644 --- a/num2words/lang_TE.py +++ b/num2words/lang_TE.py @@ -114,9 +114,9 @@ class Num2Word_TE(Num2Word_EU): "సున్న", ] - self.mid_numwords = [(100, "వందల")] + self.mid_numwords = [(100, "వంద")] - self.high_numwords = [(7, "కోటి"), (5, "లక్షల"), (3, "వేల")] + self.high_numwords = [(7, "కోటి"), (5, "లక్ష"), (3, "వేయి")] self.pointword = "బిందువు " @@ -148,7 +148,10 @@ class Num2Word_TE(Num2Word_EU): elif 100 > lnum > rnum: return ("%s-%s" % (ltext, rtext), lnum + rnum) elif lnum >= 100 > rnum: - return ("%s %s" % (ltext, rtext), lnum + rnum) + if ltext[-1] in self.modifiers: + return ("%s %s" % (ltext[:-1], rtext), lnum + rnum) + else: + return ("%s %s" % (ltext + "ల", rtext), lnum + rnum) elif rnum > lnum: return ("%s %s" % (ltext, rtext), lnum * rnum) return ("%s %s" % (ltext, rtext), lnum + rnum) diff --git a/tests/test_te.py b/tests/test_te.py index 620209e..02a1ab9 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -24,16 +24,15 @@ class Num2WordsTETest(TestCase): def test_numbers(self): self.assertEqual(num2words(66, lang="te"), u"అరవై ఆరు") self.assertEqual(num2words(1734, lang="te"), - u"ఒకటి వేల ఏడు వందల ముప్పై నాలుగు") + u"ఒకటి వేయి ఏడు వందల ముప్పై నాలుగు") self.assertEqual(num2words(134, lang="te"), u"ఒకటి వందల ముప్పై నాలుగు") self.assertEqual(num2words(54411, lang="te"), - u"యాభై నాలుగు వేల నాలుగు వందల పదకొండు") + u"యాభై నాలుగు వేయి నాలుగు వందల పదకొండు") def test_cardinal_for_float_number(self): self.assertEqual(num2words(1.61803, lang="te"), u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్న మూడు") - self.assertEqual(num2words(34.876, lang="te"), u"ముప్పై నాలుగు బిందువు ఎనిమిది ఏడు ఆరు") @@ -45,7 +44,7 @@ class Num2WordsTETest(TestCase): self.assertEqual(num2words(130, lang='te', to='ordinal'), u"ఒకటి వందల ముప్పైవ") self.assertEqual(num2words(1003, lang='te', to='ordinal'), - u"ఒకటి వేల మూడువ") + u"ఒకటి వేయిల మూడువ") def test_ordinal_num(self): self.assertEqual(num2words(3, lang="te", ordinal=True), u"మూడువ") From 3c51be6c1f5a9ab2f3501a836e2d5676c041b068 Mon Sep 17 00:00:00 2001 From: VENUGOPAL ACHHE Date: Mon, 22 Jul 2019 09:36:57 +0200 Subject: [PATCH 6/7] correction for ordinal case telugu test case and lang_TE --- num2words/lang_TE.py | 6 +++--- tests/test_te.py | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/num2words/lang_TE.py b/num2words/lang_TE.py index 49d8149..274d312 100644 --- a/num2words/lang_TE.py +++ b/num2words/lang_TE.py @@ -116,7 +116,7 @@ class Num2Word_TE(Num2Word_EU): self.mid_numwords = [(100, "వంద")] - self.high_numwords = [(7, "కోటి"), (5, "లక్ష"), (3, "వేయి")] + self.high_numwords = [(7, "కోట్ల"), (5, "లక్ష"), (3, "వేయి")] self.pointword = "బిందువు " @@ -151,14 +151,14 @@ class Num2Word_TE(Num2Word_EU): if ltext[-1] in self.modifiers: return ("%s %s" % (ltext[:-1], rtext), lnum + rnum) else: - return ("%s %s" % (ltext + "ల", rtext), lnum + rnum) + return ("%s %s" % (ltext+"ల", rtext), lnum + rnum) elif rnum > lnum: return ("%s %s" % (ltext, rtext), lnum * rnum) return ("%s %s" % (ltext, rtext), lnum + rnum) def to_ordinal_num(self, value): self.verify_ordinal(value) - return "%s%s" % (value, self.to_ordinal(value)) + return "%s%s" % (value, self.to_ordinal(value)[-1:]) def to_ordinal(self, value): self.verify_ordinal(value) diff --git a/tests/test_te.py b/tests/test_te.py index 02a1ab9..bd3f401 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -47,8 +47,8 @@ class Num2WordsTETest(TestCase): u"ఒకటి వేయిల మూడువ") def test_ordinal_num(self): - self.assertEqual(num2words(3, lang="te", ordinal=True), u"మూడువ") - self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదువ") - self.assertEqual(num2words(16, lang="te", ordinal=True), u"పదహారువ") - self.assertEqual(num2words(113, lang="te", ordinal=True), - u"ఒకటి వందల పదమూడువ") + self.assertEqual(num2words(3, lang="te", to='ordinal_num'), u"3వ") + self.assertEqual(num2words(5, lang="te", to='ordinal_num'), u"5వ") + self.assertEqual(num2words(16, lang="te", to='ordinal_num'), u"16వ") + self.assertEqual(num2words(113, lang="te", to='ordinal_num'), + u"113వ") From b89acf67090ff827273af108d14c2f14f0c6c964 Mon Sep 17 00:00:00 2001 From: Sarah Beranek Date: Mon, 19 Aug 2019 12:19:33 +0200 Subject: [PATCH 7/7] Add Ordinal Numbers Test for Kannada. --- tests/test_kn.py | 10 ++++++++-- tests/test_te.py | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/test_kn.py b/tests/test_kn.py index 6be2054..fa42cbd 100644 --- a/tests/test_kn.py +++ b/tests/test_kn.py @@ -58,10 +58,16 @@ class Num2WordsKNTest(TestCase): num2words(1003, lang='kn', to='ordinal'), u'ಒಂದು ಸಾವಿರದ ಮೂರನೇ' ) - - def test_ordinal_num(self): self.assertEqual(num2words(2, lang="kn", ordinal=True), u"ಎರಡನೇ") self.assertEqual(num2words(5, lang="kn", ordinal=True), u"ಐದನೇ") self.assertEqual(num2words(16, lang="kn", ordinal=True), u"ಹದಿನಾರನೇ") self.assertEqual(num2words(113, lang="kn", ordinal=True), u"ಒಂದು ನೂರ ಹದಿಮೂರನೇ") + + def test_ordinal_num(self): + self.assertEqual(num2words(2, lang="kn", to='ordinal_num'), u"2ಎರಡನೇ") + self.assertEqual(num2words(5, lang="kn", to='ordinal_num'), u"5ಐದನೇ") + self.assertEqual(num2words(16, lang="kn", to='ordinal_num'), + u"16ಹದಿನಾರನೇ") + self.assertEqual(num2words(113, lang="kn", to='ordinal_num'), + u"113ಒಂದು ನೂರ ಹದಿಮೂರನೇ") diff --git a/tests/test_te.py b/tests/test_te.py index bd3f401..6314310 100644 --- a/tests/test_te.py +++ b/tests/test_te.py @@ -29,15 +29,28 @@ class Num2WordsTETest(TestCase): u"ఒకటి వందల ముప్పై నాలుగు") self.assertEqual(num2words(54411, lang="te"), u"యాభై నాలుగు వేయి నాలుగు వందల పదకొండు") + self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు") + self.assertEqual(num2words(893, lang="te"), + u"ఎనిమిది వందల తొంభై మూడు") + self.assertEqual( + num2words(1729, lang="te"), u"ఒకటి వేయి ఏడు వందల ఇరవై తొమ్మిది" + ) + self.assertEqual(num2words(123, lang="te"), u"ఒకటి వందల ఇరవై మూడు") + self.assertEqual(num2words(32211, lang="te"), + u"ముప్పై రెండు వేయి రెండు వందల పదకొండు") def test_cardinal_for_float_number(self): self.assertEqual(num2words(1.61803, lang="te"), u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్న మూడు") self.assertEqual(num2words(34.876, lang="te"), u"ముప్పై నాలుగు బిందువు ఎనిమిది ఏడు ఆరు") + self.assertEqual(num2words(3.14, lang="te"), + u"మూడు బిందువు ఒకటి నాలుగు") def test_ordinal(self): self.assertEqual(num2words(1, lang='te', to='ordinal'), u"ఒకటివ") + self.assertEqual(num2words(22, lang='te', to='ordinal'), + u"ఇరవై రెండువ") self.assertEqual(num2words(23, lang='te', to='ordinal'), u"ఇరవై మూడువ") self.assertEqual(num2words(12, lang='te', to='ordinal'), u"పన్నెండువ") @@ -45,8 +58,11 @@ class Num2WordsTETest(TestCase): u"ఒకటి వందల ముప్పైవ") self.assertEqual(num2words(1003, lang='te', to='ordinal'), u"ఒకటి వేయిల మూడువ") + self.assertEqual(num2words(4, lang='te', to='ordinal'), + u"నాలుగువ") def test_ordinal_num(self): + self.assertEqual(num2words(2, lang="te", to='ordinal_num'), u"2వ") self.assertEqual(num2words(3, lang="te", to='ordinal_num'), u"3వ") self.assertEqual(num2words(5, lang="te", to='ordinal_num'), u"5వ") self.assertEqual(num2words(16, lang="te", to='ordinal_num'), u"16వ")