diff --git a/num2words/base.py b/num2words/base.py index a312f32..48837b1 100644 --- a/num2words/base.py +++ b/num2words/base.py @@ -89,6 +89,13 @@ class Num2Word_Base(object): return out + def parse_minus(self, num_str): + """Detach minus and return it as symbol with new num_str.""" + if num_str.startswith('-'): + # Extra spacing to compensate if there is no minus. + return '%s ' % self.negword, num_str[1:] + return '', num_str + def to_cardinal(self, value): try: assert int(value) == value diff --git a/num2words/lang_LT.py b/num2words/lang_LT.py index b556c71..5e2a2c2 100644 --- a/num2words/lang_LT.py +++ b/num2words/lang_LT.py @@ -14,6 +14,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA +# TODO: replace WINDOWS line endings to UNIX? from __future__ import unicode_literals from .base import Num2Word_Base @@ -98,15 +99,17 @@ class Num2Word_LT(Num2Word_Base): def to_cardinal(self, number): n = str(number).replace(',', '.') + base_str, n = self.parse_minus(n) if '.' in n: left, right = n.split('.') - return '%s %s %s' % ( + return '%s%s %s %s' % ( + base_str, self._int2word(int(left)), self.pointword, self._int2word(int(right)) ) else: - return self._int2word(int(n)) + return "%s%s" % (base_str, self._int2word(int(n))) def to_ordinal(self, number): raise NotImplementedError() diff --git a/num2words/lang_LV.py b/num2words/lang_LV.py index 7c25caa..55304b6 100644 --- a/num2words/lang_LV.py +++ b/num2words/lang_LV.py @@ -14,6 +14,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA +# TODO: replace WINDOWS line endings to UNIX? from __future__ import unicode_literals from .base import Num2Word_Base @@ -132,15 +133,17 @@ class Num2Word_LV(Num2Word_Base): def to_cardinal(self, number): n = str(number).replace(',', '.') + base_str, n = self.parse_minus(n) if '.' in n: left, right = n.split('.') - return u'%s %s %s' % ( + return '%s%s %s %s' % ( + base_str, self._int2word(int(left)), self.pointword, self._int2word(int(right)) ) else: - return self._int2word(int(n)) + return "%s%s" % (base_str, self._int2word(int(n))) def pluralize(self, n, forms): form = 0 if (n % 10 == 1 and n % 100 != 11) else 1 if n != 0 else 2 diff --git a/tests/test_lt.py b/tests/test_lt.py index e564e3d..7515588 100644 --- a/tests/test_lt.py +++ b/tests/test_lt.py @@ -44,6 +44,14 @@ class Num2WordsLTTest(TestCase): "aštuoni šimtai dvidešimt du trilijonai aštuoni šimtai dvidešimt " "keturi milijardai trys šimtai aštuoniasdešimt keturi milijonai " "du šimtai dvidešimt tūkstančių du šimtai devyniasdešimt vienas") + self.assertEqual( + num2words(-5000, lang='lt'), + 'minus penki tūkstančiai', + ) + self.assertEqual( + num2words(-5000.22, lang='lt'), + 'minus penki tūkstančiai kablelis dvidešimt du', + ) # print(fill(n2w(1000000000000000000000000000000))) # naintilijonas diff --git a/tests/test_lv.py b/tests/test_lv.py index f4a9577..df3b679 100644 --- a/tests/test_lv.py +++ b/tests/test_lv.py @@ -39,6 +39,14 @@ class Num2WordsLVTest(TestCase): 'divdesmit divi triljoni astoņi simti divdesmit četri ' 'miljardi trīs simti astoņdesmit četri miljoni divi simti ' 'divdesmit tūkstoši divi simti deviņdesmit viens') + self.assertEqual( + num2words(-5000, lang='lv'), + 'mīnus pieci tūkstoši', + ) + self.assertEqual( + num2words(-5000.22, lang='lv'), + 'mīnus pieci tūkstoši komats divdesmit divi', + ) # >>> print(fill(n2w(1000000000000000000000000000000))) # nontiljons