mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Activate flake8, isort and coveralls in the configuration of tox (#105)
* Activate flake8, isort and coveralls in the configuration of tox * Update code to respect PEP8 * Fix bug in the lang_IT for python 3 * Update the README to include the new converters.
This commit is contained in:
committed by
GitHub
parent
c6015db8b4
commit
3da0c54f3b
@@ -18,8 +18,8 @@ from __future__ import unicode_literals
|
||||
|
||||
import math
|
||||
|
||||
from .orderedmapping import OrderedMapping
|
||||
from .compat import to_s
|
||||
from .orderedmapping import OrderedMapping
|
||||
|
||||
|
||||
class Num2Word_Base(object):
|
||||
@@ -250,17 +250,17 @@ class Num2Word_Base(object):
|
||||
def test(self, value):
|
||||
try:
|
||||
_card = self.to_cardinal(value)
|
||||
except:
|
||||
except Exception:
|
||||
_card = "invalid"
|
||||
|
||||
try:
|
||||
_ord = self.to_ordinal(value)
|
||||
except:
|
||||
except Exception:
|
||||
_ord = "invalid"
|
||||
|
||||
try:
|
||||
_ordnum = self.to_ordinal_num(value)
|
||||
except:
|
||||
except Exception:
|
||||
_ordnum = "invalid"
|
||||
|
||||
print("For %s, card is %s;\n\tord is %s; and\n\tordnum is %s."
|
||||
|
||||
@@ -14,13 +14,9 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
import sys
|
||||
|
||||
PY3 = sys.version_info[0] == 3
|
||||
|
||||
|
||||
def to_s(val):
|
||||
if PY3:
|
||||
return str(val)
|
||||
else:
|
||||
try:
|
||||
return unicode(val)
|
||||
except NameError:
|
||||
return str(val)
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import division, unicode_literals, print_function
|
||||
from __future__ import division, print_function, unicode_literals
|
||||
|
||||
from . import lang_EU
|
||||
|
||||
|
||||
@@ -109,7 +110,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "is", n2w.to_currency(val))
|
||||
print(val, "is", n2w.to_year(val))
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
|
||||
@@ -55,7 +56,7 @@ class Num2Word_DE(Num2Word_EU):
|
||||
"sexagint", "septuagint", "oktogint", "nonagint"]
|
||||
self.high_numwords = (
|
||||
["zent"] + self.gen_high_numwords(units, tens, lows)
|
||||
)
|
||||
)
|
||||
self.mid_numwords = [(1000, "tausend"), (100, "hundert"),
|
||||
(90, "neunzig"), (80, "achtzig"), (70, "siebzig"),
|
||||
(60, "sechzig"), (50, "f\xFCnfzig"),
|
||||
@@ -141,11 +142,12 @@ to_ordnum = n2w.to_ordinal_num
|
||||
def main():
|
||||
for val in [1, 7, 8, 12, 17, 81, 91, 99, 100, 101, 102, 155,
|
||||
180, 300, 308, 832, 1000, 1001, 1061, 1100, 1500, 1701, 3000,
|
||||
8280, 8291, 150000, 500000, 3000000, 1000000, 2000001, 1000000000, 2000000000,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
8280, 8291, 150000, 500000, 3000000, 1000000, 2000001,
|
||||
1000000000, 2000000000, -21212121211221211111, -2.121212,
|
||||
-1.0000100]:
|
||||
n2w.test(val)
|
||||
|
||||
# n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270570)
|
||||
n2w.test(3000000)
|
||||
n2w.test(3000000000001)
|
||||
n2w.test(3000000324566)
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import division, unicode_literals, print_function
|
||||
from __future__ import division, print_function, unicode_literals
|
||||
|
||||
from . import lang_EU
|
||||
|
||||
|
||||
@@ -145,8 +146,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 160, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "er", n2w.to_currency(val))
|
||||
print(val, "er", n2w.to_year(val))
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import division, unicode_literals, print_function
|
||||
from __future__ import division, print_function, unicode_literals
|
||||
|
||||
from . import lang_EU
|
||||
|
||||
|
||||
@@ -103,8 +104,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "is", n2w.to_currency(val))
|
||||
print(val, "is", n2w.to_year(val))
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EN import Num2Word_EN
|
||||
|
||||
|
||||
@@ -38,8 +39,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "is", n2w.to_currency(val))
|
||||
print(val, "is", n2w.to_year(val))
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EN import Num2Word_EN
|
||||
|
||||
|
||||
@@ -37,8 +38,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "is", n2w.to_currency(val))
|
||||
print(val, "is", n2w.to_year(val))
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .lang_EN import Num2Word_EN
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
|
||||
@@ -186,8 +187,7 @@ def main():
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
print(n2w.to_currency(1222))
|
||||
print(n2w.to_currency(1222, old=True))
|
||||
print(n2w.to_year(1222))
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_ES import Num2Word_ES
|
||||
|
||||
|
||||
@@ -40,7 +41,7 @@ def main():
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
print(n2w.to_currency(1222))
|
||||
print(n2w.to_currency(1222, old=True))
|
||||
print(n2w.to_year(1222))
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_ES import Num2Word_ES
|
||||
|
||||
|
||||
@@ -41,7 +42,7 @@ def main():
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
print(n2w.to_currency(1222))
|
||||
print(n2w.to_currency(1222, old=True))
|
||||
print(n2w.to_year(1222))
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .base import Num2Word_Base
|
||||
|
||||
|
||||
@@ -32,7 +33,8 @@ class Num2Word_EU(Num2Word_Base):
|
||||
"octo", "novem"]
|
||||
tens = ["dec", "vigint", "trigint", "quadragint", "quinquagint",
|
||||
"sexagint", "septuagint", "octogint", "nonagint"]
|
||||
self.high_numwords = ["cent"] + self.gen_high_numwords(units, tens, lows)
|
||||
self.high_numwords = ["cent"] + self.gen_high_numwords(units, tens,
|
||||
lows)
|
||||
|
||||
def to_currency(self, val, longval=True, jointxt=""):
|
||||
return self.to_splitnum(val, hightxt="Euro/s", lowtxt="Euro cent/s",
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
|
||||
@@ -52,7 +53,8 @@ class Num2Word_FR(Num2Word_EU):
|
||||
else:
|
||||
if (not (cnum - 80) % 100 or not cnum % 100) and ctext[-1] == "s":
|
||||
ctext = ctext[:-1]
|
||||
if cnum < 1000 and nnum != 1000 and ntext[-1] != "s" and not nnum % 100:
|
||||
if cnum < 1000 and nnum != 1000 and \
|
||||
ntext[-1] != "s" and not nnum % 100:
|
||||
ntext += "s"
|
||||
|
||||
if nnum < cnum < 100:
|
||||
@@ -109,7 +111,7 @@ def main():
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957)
|
||||
print(n2w.to_currency(112121))
|
||||
print(n2w.to_year(1996))
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_FR import Num2Word_FR
|
||||
|
||||
|
||||
@@ -35,7 +36,8 @@ class Num2Word_FR_CH(Num2Word_FR):
|
||||
if nnum < 1000000:
|
||||
return next
|
||||
|
||||
if cnum < 1000 and nnum != 1000 and ntext[-1] != "s" and not nnum % 100:
|
||||
if cnum < 1000 and nnum != 1000 and\
|
||||
ntext[-1] != "s" and not nnum % 100:
|
||||
ntext += "s"
|
||||
|
||||
if nnum < cnum < 100:
|
||||
@@ -61,7 +63,7 @@ def main():
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
1325325436067876801768700107601001012212132143210473207540327057320950)
|
||||
print(n2w.to_currency(112121))
|
||||
print(n2w.to_year(1996))
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .lang_FR import Num2Word_FR
|
||||
|
||||
|
||||
@@ -40,7 +41,7 @@ def main():
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(
|
||||
1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
1325325436067876801768700107601001012212132143210473207540327057320950)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "is", n2w.to_currency(val))
|
||||
print(val, "is", n2w.to_year(val))
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
ZERO = (u'אפס',)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
|
||||
class Num2Word_ID():
|
||||
@@ -128,8 +128,9 @@ class Num2Word_ID():
|
||||
return self.BASE[int(number[1])]
|
||||
else:
|
||||
return (
|
||||
self.BASE[int(number[0])] + ['puluh'] + self.BASE[int(number[1])]
|
||||
)
|
||||
self.BASE[int(number[0])] + ['puluh']
|
||||
+ self.BASE[int(number[1])]
|
||||
)
|
||||
|
||||
def spell_float(self, float_part):
|
||||
# spell the float number
|
||||
@@ -168,7 +169,7 @@ class Num2Word_ID():
|
||||
|
||||
def to_cardinal(self, number):
|
||||
if number >= self.max_num:
|
||||
raise OverflowError(self.errmsg_toobig % (number, self.maxnum))
|
||||
raise OverflowError(self.errmsg_toobig % (number, self.max_num))
|
||||
minus = ''
|
||||
if number < 0:
|
||||
minus = 'min '
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
# Globals
|
||||
# -------
|
||||
@@ -101,9 +100,10 @@ class Num2Word_IT:
|
||||
prefix = self.to_ordinal(int(float_number))
|
||||
else:
|
||||
prefix = self.to_cardinal(int(float_number))
|
||||
float_part = str(float_number).split('.')[1]
|
||||
postfix = " ".join(
|
||||
# Drops the trailing zero and comma ~~~~
|
||||
[self.to_cardinal(int(c)) for c in str(float_number % 1)[2:]]
|
||||
# Drops the trailing zero and comma
|
||||
[self.to_cardinal(int(c)) for c in float_part]
|
||||
)
|
||||
return prefix + Num2Word_IT.FLOAT_INFIX_WORD + postfix
|
||||
|
||||
|
||||
@@ -282,6 +282,7 @@ class Num2Word_LV(object):
|
||||
def to_currency(self, n, currency='EUR', cents=True, seperator=','):
|
||||
return to_currency(n, currency, cents, seperator)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import doctest
|
||||
doctest.testmod()
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import unicode_literals, print_function
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import division, unicode_literals, print_function
|
||||
from __future__ import division, print_function, unicode_literals
|
||||
|
||||
from . import lang_EU
|
||||
|
||||
|
||||
@@ -111,7 +112,7 @@ def main():
|
||||
8280, 8291, 150000, 500000, 1000000, 2000000, 2000001,
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
for val in [1, 120, 1000, 1120, 1800, 1976, 2000, 2010, 2099, 2171]:
|
||||
print(val, "er", n2w.to_currency(val))
|
||||
print(val, "er", n2w.to_year(val))
|
||||
|
||||
@@ -18,11 +18,11 @@ u"""
|
||||
>>> from textwrap import fill
|
||||
|
||||
>>> ' '.join([str(i) for i in splitby3('1')])
|
||||
u'1'
|
||||
'1'
|
||||
>>> ' '.join([str(i) for i in splitby3('1123')])
|
||||
u'1 123'
|
||||
'1 123'
|
||||
>>> ' '.join([str(i) for i in splitby3('1234567890')])
|
||||
u'1 234 567 890'
|
||||
'1 234 567 890'
|
||||
|
||||
>>> print(' '.join([n2w(i) for i in range(10)]))
|
||||
zero jeden dwa trzy cztery pięć sześć siedem osiem dziewięć
|
||||
@@ -194,7 +194,12 @@ def get_digits(n):
|
||||
|
||||
|
||||
def pluralize(n, forms):
|
||||
form = 0 if n == 1 else 1 if (n % 10 > 1 and n % 10 < 5 and (n % 100 < 10 or n % 100 > 20)) else 2
|
||||
if n == 1:
|
||||
form = 0
|
||||
elif 5 > n % 10 > 1 and (n % 100 < 10 or n % 100 > 20):
|
||||
form = 1
|
||||
else:
|
||||
form = 2
|
||||
return forms[form]
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
# MA 02110-1301 USA
|
||||
|
||||
from __future__ import division, unicode_literals
|
||||
|
||||
import re
|
||||
|
||||
from . import lang_EU
|
||||
@@ -31,13 +32,14 @@ class Num2Word_PT_BR(lang_EU.Num2Word_EU):
|
||||
def setup(self):
|
||||
self.negword = "menos "
|
||||
self.pointword = "vírgula"
|
||||
self.errmsg_nornum = "Somente números podem ser convertidos para palavras"
|
||||
self.errmsg_nornum = "Somente números podem ser convertidos para " \
|
||||
"palavras"
|
||||
self.exclude_title = ["e", "vírgula", "menos"]
|
||||
|
||||
self.mid_numwords = [
|
||||
(1000, "mil"), (100, "cem"), (90, "noventa"),
|
||||
(80, "oitenta"), (70, "setenta"), (60, "sessenta"), (50, "cinquenta"),
|
||||
(40, "quarenta"), (30, "trinta")
|
||||
(80, "oitenta"), (70, "setenta"), (60, "sessenta"),
|
||||
(50, "cinquenta"), (40, "quarenta"), (30, "trinta")
|
||||
]
|
||||
self.low_numwords = [
|
||||
"vinte", "dezenove", "dezoito", "dezessete", "dezesseis",
|
||||
@@ -132,12 +134,15 @@ class Num2Word_PT_BR(lang_EU.Num2Word_EU):
|
||||
def to_cardinal(self, value):
|
||||
result = super(Num2Word_PT_BR, self).to_cardinal(value)
|
||||
|
||||
# Transforms "mil E cento e catorze reais" into "mil, cento e catorze reais"
|
||||
# Transforms "mil E cento e catorze reais" into "mil, cento e catorze
|
||||
# reais"
|
||||
for ext in (
|
||||
'mil', 'milhão', 'milhões', 'bilhão', 'bilhões',
|
||||
'trilhão', 'trilhões', 'quatrilhão', 'quatrilhões'):
|
||||
if re.match('.*{} e \w*ento'.format(ext), result):
|
||||
result = result.replace('{} e'.format(ext), '{},'.format(ext), 1)
|
||||
result = result.replace(
|
||||
'{} e'.format(ext), '{},'.format(ext), 1
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
@@ -153,7 +158,8 @@ class Num2Word_PT_BR(lang_EU.Num2Word_EU):
|
||||
thousand_separator = self.thousand_separators[idx]
|
||||
|
||||
if char != '0' and thousand_separator:
|
||||
# avoiding "segundo milionésimo milésimo" for 6000000, for instance
|
||||
# avoiding "segundo milionésimo milésimo" for 6000000,
|
||||
# for instance
|
||||
result.append(thousand_separator)
|
||||
thousand_separator = ''
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@ u"""
|
||||
>>> from textwrap import fill
|
||||
|
||||
>>> ' '.join([str(i) for i in splitby3('1')])
|
||||
u'1'
|
||||
'1'
|
||||
>>> ' '.join([str(i) for i in splitby3('1123')])
|
||||
u'1 123'
|
||||
'1 123'
|
||||
>>> ' '.join([str(i) for i in splitby3('1234567890')])
|
||||
u'1 234 567 890'
|
||||
'1 234 567 890'
|
||||
|
||||
>>> print(' '.join([n2w(i) for i in range(10)]))
|
||||
ноль один два три четыре пять шесть семь восемь девять
|
||||
@@ -205,10 +205,10 @@ def get_digits(n):
|
||||
|
||||
|
||||
def pluralize(n, forms):
|
||||
if (n % 100 < 10 or n % 100 > 20):
|
||||
if n % 100 < 10 or n % 100 > 20:
|
||||
if n % 10 == 1:
|
||||
form = 0
|
||||
elif (n % 10 > 1 and n % 10 < 5):
|
||||
elif 5 > n % 10 > 1:
|
||||
form = 1
|
||||
else:
|
||||
form = 2
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from .lang_EU import Num2Word_EU
|
||||
|
||||
|
||||
@@ -157,7 +158,7 @@ def main():
|
||||
-21212121211221211111, -2.121212, -1.0000100]:
|
||||
n2w.test(val)
|
||||
|
||||
n2w.test(1325325436067876801768700107601001012212132143210473207540327057320957032975032975093275093275093270957329057320975093272950730)
|
||||
n2w.test(13253254360678768017687001076010010122121321432104732075403270573)
|
||||
print(n2w.to_currency(112121))
|
||||
print(n2w.to_year(2000))
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ class Num2Word_TR(object):
|
||||
self.errmsg_nonnum = u"Sadece sayılar yazıya çevrilebilir."
|
||||
self.errmsg_floatord = u"Tam sayı olmayan {} sıralamada kullanılamaz."
|
||||
self.errmsg_negord = u"Pozitif olmayan {} sıralamada kullanılamaz."
|
||||
self.errmsg_toobig = u"abs({}) sayı yazıya çevirmek için çok büyük. Yazıya çevrilebilecek en büyük rakam {}."
|
||||
self.errmsg_toobig = u"abs({}) sayı yazıya çevirmek için çok büyük. " \
|
||||
u"Yazıya çevrilebilecek en büyük rakam {}."
|
||||
self.exclude_title = []
|
||||
self.DECIMAL_SIGN = (",",)
|
||||
self.ORDINAL_SIGN = (".",)
|
||||
@@ -116,192 +117,319 @@ class Num2Word_TR(object):
|
||||
def to_cardinal(self, value):
|
||||
wrd = ""
|
||||
is_cardinal = self.verify_cardinal(value)
|
||||
if is_cardinal:
|
||||
if not int(value) == value:
|
||||
return self.to_cardinal_float(value)
|
||||
self.to_splitnum(value)
|
||||
if not is_cardinal:
|
||||
return wrd
|
||||
|
||||
if self.order_of_last_zero_digit >= len(self.integers_to_read[0]):
|
||||
# number like 00 and all 0s and even more, raise error
|
||||
if not int(value) == value:
|
||||
return self.to_cardinal_float(value)
|
||||
self.to_splitnum(value)
|
||||
|
||||
if self.order_of_last_zero_digit >= len(self.integers_to_read[0]):
|
||||
# number like 00 and all 0s and even more, raise error
|
||||
return wrd
|
||||
|
||||
if self.total_triplets_to_read == 1:
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like x0, read cardinal x0 and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xy, read cardinal xy and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_triplets_to_read == 1:
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like x0, read cardinal x0 and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xy, read cardinal xy and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like x, read cardinal x and return
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like x, read cardinal x and return
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
return wrd
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == 2:
|
||||
# number like x00, read cardinal x00 and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like xy0, read cardinal xy0 and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xyz, read cardinal xyz and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_triplets_to_read >= 2:
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x0 and all 0s, read cardinal x0 0..0
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy and all 0s, read cardinal xy 0..0
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy and others, read cardinal xy n..n
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x and all 0s, read cardinal x 0..0
|
||||
# and return
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x and others, read cardinal x n..n
|
||||
# and return
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x00 and all 0s, read cardinal x00 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy0 and all 0s, read cardinal xy0 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all 0s, read cardinal xyz 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all others, read cardinal xyz n..n
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][2] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
for i in list(range(self.total_triplets_to_read - 1, 0, -1)):
|
||||
reading_triplet_order = self.total_triplets_to_read - i
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == 2:
|
||||
# number like x00, read cardinal x00 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like xy0, read cardinal xy0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xyz, read cardinal xyz and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
return wrd
|
||||
last_read_digit_order = reading_triplet_order * 3
|
||||
else:
|
||||
last_read_digit_order = (reading_triplet_order - 1) * 3 +\
|
||||
self.total_digits_outside_triplets
|
||||
|
||||
if self.total_triplets_to_read >= 2:
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x0 and all 0s, read cardinal x0 0..0 and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 2:
|
||||
# number like xy and all 0s, read cardinal xy 0..0 and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 2:
|
||||
# number like xy and others, read cardinal xy n..n and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x and all 0s, read cardinal x 0..0 and return
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 1:
|
||||
# number like x and others, read cardinal x n..n and return
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x00 and all 0s, read cardinal x00 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 2:
|
||||
# number like xy0 and all 0s, read cardinal xy0 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all 0s, read cardinal xyz 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all others, read cardinal xyz n..n
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][2] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
|
||||
for i in list(range(self.total_triplets_to_read - 1, 0, -1)):
|
||||
reading_triplet_order = self.total_triplets_to_read - i
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
last_read_digit_order = reading_triplet_order * 3
|
||||
else:
|
||||
last_read_digit_order = (reading_triplet_order - 1) * 3 + self.total_digits_outside_triplets
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order: last_read_digit_order + 3] == "000":
|
||||
if not self.integers_to_read[0][last_read_digit_order] == "0":
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][last_read_digit_order], "")
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 1:
|
||||
if i == 1:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
return wrd
|
||||
elif i > 1:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 3
|
||||
] == "000":
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order
|
||||
] == "0":
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][last_read_digit_order], ""
|
||||
)
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 1:
|
||||
if i == 1:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
return wrd
|
||||
elif i > 1:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order + 1] == "0":
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 2:
|
||||
if i == 1:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 1], "")
|
||||
return wrd
|
||||
elif i > 1:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 1], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][last_read_digit_order + 1],
|
||||
"")
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order + 1] == "0":
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 2:
|
||||
if i == 1:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
return wrd
|
||||
elif i > 1:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order + 2] == "0":
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 3:
|
||||
if i == 1:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order + 2] == "0":
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 3:
|
||||
if i == 1:
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
return wrd
|
||||
if i == 2:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2
|
||||
] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
return wrd
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
elif not self.integers_to_read[0][
|
||||
last_read_digit_order + 2] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
if i > 2:
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2
|
||||
] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
else:
|
||||
if i == 2:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2
|
||||
] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
elif not self.integers_to_read[0][last_read_digit_order + 2] == "1":
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
elif not self.integers_to_read[0][
|
||||
last_read_digit_order + 2
|
||||
] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
if i > 2:
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
else:
|
||||
if i == 2:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
elif not self.integers_to_read[0][last_read_digit_order + 2] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
|
||||
return wrd
|
||||
|
||||
@@ -359,116 +487,220 @@ class Num2Word_TR(object):
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like x0, read ordinal x0 and return
|
||||
wrd += self.ORDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.ORDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xy, read ordinal xy and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.ORDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.ORDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like x, read ordinal x and return
|
||||
wrd += self.ORDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.ORDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == 2:
|
||||
# number like x00, read ordinal x00 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.ORDINAL_HUNDRED[0]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 1:
|
||||
# number like xy0, read ordinal xy0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.ORDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.ORDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == 0:
|
||||
# number like xyz, read ordinal xyz and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
if not self.integers_to_read[0][2] == "0":
|
||||
wrd += self.ORDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
wrd += self.ORDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
return wrd
|
||||
|
||||
if self.total_triplets_to_read >= 2:
|
||||
if self.total_digits_outside_triplets == 2:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x0 and all 0s, read ordinal x0 0..0 and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x0 and all 0s, read ordinal x0 0..0
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 2:
|
||||
# number like xy and all 0s, read ordinal xy 0..0 and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy and all 0s, read ordinal xy 0..0
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 2:
|
||||
# number like xy and others, read cardinal xy n..n and return
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy and others, read cardinal xy n..n
|
||||
# and return
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
if self.total_digits_outside_triplets == 1:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x and all 0s, read ordinal x 0..0 and return
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x and all 0s, read ordinal x 0..0
|
||||
# and return
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 1:
|
||||
# number like x and others, read cardinal x n..n and return
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][0], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x and others, read cardinal x n..n
|
||||
# and return
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][0] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 1:
|
||||
# number like x00 and all 0s, read ordinal x00 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 1:
|
||||
# number like x00 and all 0s, read ordinal x00 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 2:
|
||||
# number like xy0 and all 0s, read ordinal xy0 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 2:
|
||||
# number like xy0 and all 0s, read ordinal xy0 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all 0s, read ordinal xyz 0..0 and return
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all 0s, read ordinal xyz 0..0
|
||||
# and return
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
wrd += self.ORDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
return wrd
|
||||
if self.order_of_last_zero_digit < len(self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all others, read cardinal xyz n..n
|
||||
wrd += self.HUNDREDS.get(self.integers_to_read[0][0], "")
|
||||
if self.order_of_last_zero_digit < len(
|
||||
self.integers_to_read[0]) - 3:
|
||||
# number like xyz and all others, read cardinal
|
||||
# xyz n..n
|
||||
wrd += self.HUNDREDS.get(
|
||||
self.integers_to_read[0][0], ""
|
||||
)
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][1], "")
|
||||
if not (self.total_triplets_to_read == 2 and self.integers_to_read[0][2] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][2], "")
|
||||
wrd += self.CARDINAL_TRIPLETS[self.total_triplets_to_read - 1]
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][1], ""
|
||||
)
|
||||
if not (self.total_triplets_to_read == 2 and
|
||||
self.integers_to_read[0][2] == "1"):
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][2], ""
|
||||
)
|
||||
wrd += self.CARDINAL_TRIPLETS[
|
||||
self.total_triplets_to_read - 1
|
||||
]
|
||||
|
||||
for i in list(range(self.total_triplets_to_read - 1, 0, -1)):
|
||||
reading_triplet_order = self.total_triplets_to_read - i
|
||||
if self.total_digits_outside_triplets == 0:
|
||||
last_read_digit_order = reading_triplet_order * 3
|
||||
else:
|
||||
last_read_digit_order = (reading_triplet_order - 1) * 3 + self.total_digits_outside_triplets
|
||||
last_read_digit_order = \
|
||||
(reading_triplet_order - 1) * 3 + \
|
||||
self.total_digits_outside_triplets
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order: last_read_digit_order + 3] == "000":
|
||||
if not self.integers_to_read[0][last_read_digit_order] == "0":
|
||||
if not self.integers_to_read[0][last_read_digit_order] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(self.integers_to_read[0][last_read_digit_order], "")
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 3
|
||||
] == "000":
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order
|
||||
] == "0":
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order
|
||||
] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order
|
||||
], ""
|
||||
)
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 1:
|
||||
if i == 1:
|
||||
wrd += self.ORDINAL_HUNDRED[0]
|
||||
@@ -480,57 +712,89 @@ class Num2Word_TR(object):
|
||||
else:
|
||||
wrd += self.CARDINAL_HUNDRED[0]
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order + 1] == "0":
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order + 1
|
||||
] == "0":
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 2:
|
||||
if i == 1:
|
||||
wrd += self.ORDINAL_TENS.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 1], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
return wrd
|
||||
elif i > 1:
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 1], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
wrd += self.CARDINAL_TENS.get(self.integers_to_read[0][last_read_digit_order + 1],
|
||||
"")
|
||||
wrd += self.CARDINAL_TENS.get(
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 1], ""
|
||||
)
|
||||
|
||||
if not self.integers_to_read[0][last_read_digit_order + 2] == "0":
|
||||
if self.order_of_last_zero_digit == len(self.integers_to_read[0]) - (
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order + 2
|
||||
] == "0":
|
||||
if self.order_of_last_zero_digit == len(
|
||||
self.integers_to_read[0]) - (
|
||||
last_read_digit_order) - 3:
|
||||
if i == 1:
|
||||
wrd += self.ORDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
return wrd
|
||||
if i == 2:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
elif not self.integers_to_read[0][last_read_digit_order + 2] == "1":
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
elif not self.integers_to_read[0][
|
||||
last_read_digit_order + 2
|
||||
] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
if i > 2:
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
wrd += self.ORDINAL_TRIPLETS[i - 1]
|
||||
return wrd
|
||||
else:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
else:
|
||||
if not self.integers_to_read[0][
|
||||
last_read_digit_order: last_read_digit_order + 2] == "00":
|
||||
last_read_digit_order:
|
||||
last_read_digit_order + 2] == "00":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
elif not self.integers_to_read[0][last_read_digit_order + 2] == "1":
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
elif not self.integers_to_read[0][
|
||||
last_read_digit_order + 2] == "1":
|
||||
wrd += self.CARDINAL_ONES.get(
|
||||
self.integers_to_read[0][last_read_digit_order + 2], "")
|
||||
self.integers_to_read[0][
|
||||
last_read_digit_order + 2], ""
|
||||
)
|
||||
|
||||
wrd += self.CARDINAL_TRIPLETS[i - 1]
|
||||
|
||||
@@ -539,12 +803,19 @@ class Num2Word_TR(object):
|
||||
def to_splitnum(self, val):
|
||||
float_digits = str(int(val * 10 ** self.precision))
|
||||
if not int(val) == 0:
|
||||
self.integers_to_read = [str(int(val)), float_digits[len(float_digits) - self.precision:]]
|
||||
self.integers_to_read = [
|
||||
str(int(val)),
|
||||
float_digits[len(float_digits) - self.precision:]
|
||||
]
|
||||
else:
|
||||
self.integers_to_read = ["0", "0" * (self.precision - len(float_digits))
|
||||
+ float_digits[len(float_digits) - self.precision:]]
|
||||
self.integers_to_read = [
|
||||
"0",
|
||||
"0" * (self.precision - len(float_digits)) +
|
||||
float_digits[len(float_digits) - self.precision:]
|
||||
]
|
||||
if len(self.integers_to_read[0]) % 3 > 0:
|
||||
self.total_triplets_to_read = (len(self.integers_to_read[0]) // 3) + 1
|
||||
self.total_triplets_to_read = (len(self.integers_to_read[0]) // 3)\
|
||||
+ 1
|
||||
elif len(self.integers_to_read[0]) % 3 == 0:
|
||||
self.total_triplets_to_read = len(self.integers_to_read[0]) // 3
|
||||
self.total_digits_outside_triplets = len(self.integers_to_read[0]) % 3
|
||||
@@ -558,9 +829,10 @@ class Num2Word_TR(object):
|
||||
else:
|
||||
found = 1
|
||||
|
||||
def to_currency(self, value, **kwargs):
|
||||
def to_currency(self, value):
|
||||
valueparts = self.to_cardinal(value).split(self.pointword)
|
||||
if len(valueparts) == 1:
|
||||
return valueparts[0] + self.CURRENCY_UNIT[0]
|
||||
if len(valueparts) == 2:
|
||||
return self.CURRENCY_UNIT[0].join(valueparts) + self.CURRENCY_SUBUNIT[0]
|
||||
return self.CURRENCY_UNIT[0].join(valueparts) + \
|
||||
self.CURRENCY_SUBUNIT[0]
|
||||
|
||||
@@ -18,11 +18,11 @@ u"""
|
||||
>>> from textwrap import fill
|
||||
|
||||
>>> ' '.join([str(i) for i in splitby3('1')])
|
||||
u'1'
|
||||
'1'
|
||||
>>> ' '.join([str(i) for i in splitby3('1123')])
|
||||
u'1 123'
|
||||
'1 123'
|
||||
>>> ' '.join([str(i) for i in splitby3('1234567890')])
|
||||
u'1 234 567 890'
|
||||
'1 234 567 890'
|
||||
|
||||
>>> print(' '.join([n2w(i) for i in range(10)]))
|
||||
нуль один два три чотири п'ять шiсть сiмь вiсiм дев'ять
|
||||
@@ -208,10 +208,10 @@ def get_digits(n):
|
||||
def pluralize(n, forms):
|
||||
# form = 0 if n==1 else 1 if (n % 10 > 1 and n % 10 < 5 and (n % 100 < 10
|
||||
# or n % 100 > 20)) else 2
|
||||
if (n % 100 < 10 or n % 100 > 20):
|
||||
if n % 100 < 10 or n % 100 > 20:
|
||||
if n % 10 == 1:
|
||||
form = 0
|
||||
elif (n % 10 > 1 and n % 10 < 5):
|
||||
elif 5 > n % 10 > 1:
|
||||
form = 1
|
||||
else:
|
||||
form = 2
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
||||
to_19 = (u'không', u'một', u'hai', u'ba', u'bốn', u'năm', u'sáu',
|
||||
u'bảy', u'tám', u'chín', u'mười', u'mười một', u'mười hai',
|
||||
u'mười ba', u'mười bốn', u'mười lăm', u'mười sáu', u'mười bảy',
|
||||
@@ -75,12 +74,12 @@ class Num2Word_VN(object):
|
||||
for (didx, dval) in ((v - 1, 1000 ** v) for v in range(len(denom))):
|
||||
if dval > val:
|
||||
mod = 1000 ** didx
|
||||
l = val // mod
|
||||
r = val - (l * mod)
|
||||
lval = val // mod
|
||||
r = val - (lval * mod)
|
||||
|
||||
ret = self._convert_nnn(l) + u' ' + denom[didx]
|
||||
if r > 0 and r <= 99:
|
||||
ret = self._convert_nnn(l) + u' ' + denom[didx] + u' lẻ'
|
||||
ret = self._convert_nnn(lval) + u' ' + denom[didx]
|
||||
if 99 >= r > 0:
|
||||
ret = self._convert_nnn(lval) + u' ' + denom[didx] + u' lẻ'
|
||||
if r > 0:
|
||||
ret = ret + ' ' + self.vietnam_number(r)
|
||||
return ret
|
||||
|
||||
Reference in New Issue
Block a user