mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Merge pull request #228 from TrangOul/patch-1
Extend Polish names + typos; power of thousand names not inserted when value is 0
This commit is contained in:
@@ -130,6 +130,10 @@ class Num2Word_CZ(Num2Word_Base):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
|
|||||||
@@ -94,9 +94,11 @@ def int2word(n):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
n1, n2, n3 = get_digits(x)
|
|
||||||
|
|
||||||
# print str(n3) + str(n2) + str(n1)
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
if n3 <= 2:
|
if n3 <= 2:
|
||||||
|
|||||||
@@ -149,6 +149,10 @@ class Num2Word_LT(Num2Word_Base):
|
|||||||
|
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
|
|||||||
@@ -157,6 +157,10 @@ class Num2Word_LV(Num2Word_Base):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
@@ -176,7 +180,7 @@ class Num2Word_LV(Num2Word_Base):
|
|||||||
elif n1 > 0 and not (i > 0 and x == 1):
|
elif n1 > 0 and not (i > 0 and x == 1):
|
||||||
words.append(ONES[n1][0])
|
words.append(ONES[n1][0])
|
||||||
|
|
||||||
if i > 0 and x != 0:
|
if i > 0:
|
||||||
words.append(self.pluralize(x, THOUSANDS[i]))
|
words.append(self.pluralize(x, THOUSANDS[i]))
|
||||||
|
|
||||||
return ' '.join(words)
|
return ' '.join(words)
|
||||||
|
|||||||
@@ -66,20 +66,31 @@ HUNDREDS = {
|
|||||||
6: ('sześćset',),
|
6: ('sześćset',),
|
||||||
7: ('siedemset',),
|
7: ('siedemset',),
|
||||||
8: ('osiemset',),
|
8: ('osiemset',),
|
||||||
9: ('dziewęćset',),
|
9: ('dziewięćset',),
|
||||||
}
|
}
|
||||||
|
|
||||||
THOUSANDS = {
|
THOUSANDS = {
|
||||||
1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3
|
1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3
|
||||||
2: ('milion', 'miliony', 'milionów'), # 10^6
|
2: ('milion', 'miliony', 'milionów'), # 10^6
|
||||||
3: ('miliard', 'miliardy', 'miliardów'), # 10^9
|
3: ('miliard', 'miliardy', 'miliardów'), # 10^9
|
||||||
4: ('bilion', 'biliony', 'bilionów'), # 10^12
|
4: ('bilion', 'biliony', 'bilionów'), # 10^12
|
||||||
5: ('biliard', 'biliardy', 'biliardów'), # 10^15
|
5: ('biliard', 'biliardy', 'biliardów'), # 10^15
|
||||||
6: ('trylion', 'tryliony', 'trylionów'), # 10^18
|
6: ('trylion', 'tryliony', 'trylionów'), # 10^18
|
||||||
7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21
|
7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21
|
||||||
8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24
|
8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24
|
||||||
9: ('kwaryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27
|
9: ('kwadryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27
|
||||||
10: ('kwintylion', 'kwintyliony', 'kwintylionów'), # 10^30
|
10: ('kwintylion', 'kwintyliony', 'kwintylionów'), # 10^30
|
||||||
|
11: ('kwintyliard', 'kwintyliardy', 'kwintyliardów'), # 10^33
|
||||||
|
12: ('sekstylion', 'sekstyliony', 'sekstylionów'), # 10^36
|
||||||
|
13: ('sekstyliard', 'sekstyliardy', 'sekstyliardów'), # 10^39
|
||||||
|
14: ('septylion', 'septyliony', 'septylionów'), # 10^42
|
||||||
|
15: ('septyliard', 'septyliardy', 'septyliardów'), # 10^45
|
||||||
|
16: ('oktylion', 'oktyliony', 'oktylionów'), # 10^48
|
||||||
|
17: ('oktyliard', 'oktyliardy', 'oktyliardów'), # 10^51
|
||||||
|
18: ('nonylion', 'nonyliony', 'nonylionów'), # 10^54
|
||||||
|
19: ('nonyliard', 'nonyliardy', 'nonyliardów'), # 10^57
|
||||||
|
20: ('decylion', 'decyliony', 'decylionów'), # 10^60
|
||||||
|
21: ('decyliard', 'decyliardy', 'decyliardów'), # 10^63
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -130,6 +141,10 @@ class Num2Word_PL(Num2Word_Base):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
|
|||||||
@@ -209,6 +209,10 @@ class Num2Word_RU(Num2Word_Base):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
@@ -223,7 +227,7 @@ class Num2Word_RU(Num2Word_Base):
|
|||||||
ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES
|
ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES
|
||||||
words.append(ones[n1][0])
|
words.append(ones[n1][0])
|
||||||
|
|
||||||
if i > 0 and x != 0:
|
if i > 0:
|
||||||
words.append(self.pluralize(x, THOUSANDS[i]))
|
words.append(self.pluralize(x, THOUSANDS[i]))
|
||||||
|
|
||||||
return ' '.join(words)
|
return ' '.join(words)
|
||||||
|
|||||||
@@ -147,6 +147,10 @@ class Num2Word_UK(Num2Word_Base):
|
|||||||
i = len(chunks)
|
i = len(chunks)
|
||||||
for x in chunks:
|
for x in chunks:
|
||||||
i -= 1
|
i -= 1
|
||||||
|
|
||||||
|
if x == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
n1, n2, n3 = get_digits(x)
|
n1, n2, n3 = get_digits(x)
|
||||||
|
|
||||||
if n3 > 0:
|
if n3 > 0:
|
||||||
@@ -162,7 +166,7 @@ class Num2Word_UK(Num2Word_Base):
|
|||||||
ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES
|
ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES
|
||||||
words.append(ones[n1][0])
|
words.append(ones[n1][0])
|
||||||
|
|
||||||
if i > 0 and ((n1 + n2 + n3) > 0):
|
if i > 0:
|
||||||
words.append(self.pluralize(x, THOUSANDS[i]))
|
words.append(self.pluralize(x, THOUSANDS[i]))
|
||||||
|
|
||||||
return ' '.join(words)
|
return ' '.join(words)
|
||||||
|
|||||||
@@ -53,9 +53,6 @@ class Num2WordsLTTest(TestCase):
|
|||||||
'minus penki tūkstančiai kablelis dvidešimt du',
|
'minus penki tūkstančiai kablelis dvidešimt du',
|
||||||
)
|
)
|
||||||
|
|
||||||
# print(fill(n2w(1000000000000000000000000000000)))
|
|
||||||
# naintilijonas
|
|
||||||
|
|
||||||
def test_to_ordinal(self):
|
def test_to_ordinal(self):
|
||||||
# @TODO: implement to_ordinal
|
# @TODO: implement to_ordinal
|
||||||
with self.assertRaises(NotImplementedError):
|
with self.assertRaises(NotImplementedError):
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ class Num2WordsLVTest(TestCase):
|
|||||||
'mīnus pieci tūkstoši komats divdesmit divi',
|
'mīnus pieci tūkstoši komats divdesmit divi',
|
||||||
)
|
)
|
||||||
|
|
||||||
# >>> print(fill(n2w(1000000000000000000000000000000)))
|
|
||||||
# nontiljons
|
|
||||||
|
|
||||||
self.assertEqual(num2words(0, lang='lv'), 'nulle')
|
self.assertEqual(num2words(0, lang='lv'), 'nulle')
|
||||||
self.assertEqual(num2words(5, lang='lv'), "pieci")
|
self.assertEqual(num2words(5, lang='lv'), "pieci")
|
||||||
self.assertEqual(num2words(15, lang='lv'), "piecpadsmit")
|
self.assertEqual(num2words(15, lang='lv'), "piecpadsmit")
|
||||||
|
|||||||
@@ -45,6 +45,10 @@ class Num2WordsPLTest(TestCase):
|
|||||||
"miliard dwieście trzydzieści cztery miliony pięćset "
|
"miliard dwieście trzydzieści cztery miliony pięćset "
|
||||||
"sześćdziesiąt siedem tysięcy osiemset dziewięćdzisiąt"
|
"sześćdziesiąt siedem tysięcy osiemset dziewięćdzisiąt"
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(10000000001000000100000, lang='pl'),
|
||||||
|
"dziesięć tryliardów bilion sto tysięcy"
|
||||||
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(215461407892039002157189883901676, lang='pl'),
|
num2words(215461407892039002157189883901676, lang='pl'),
|
||||||
"dwieście piętnaście kwintylionów czterysta sześćdziesiąt jeden "
|
"dwieście piętnaście kwintylionów czterysta sześćdziesiąt jeden "
|
||||||
@@ -52,7 +56,7 @@ class Num2WordsPLTest(TestCase):
|
|||||||
"dziewięćdzisiąt dwa tryliardy trzydzieści dziewięć trylionów "
|
"dziewięćdzisiąt dwa tryliardy trzydzieści dziewięć trylionów "
|
||||||
"dwa biliardy sto pięćdziesiąt siedem bilionów sto osiemdziesiąt "
|
"dwa biliardy sto pięćdziesiąt siedem bilionów sto osiemdziesiąt "
|
||||||
"dziewięć miliardów osiemset osiemdziesiąt trzy miliony "
|
"dziewięć miliardów osiemset osiemdziesiąt trzy miliony "
|
||||||
"dziewęćset jeden tysięcy sześćset siedemdziesiąt sześć"
|
"dziewięćset jeden tysięcy sześćset siedemdziesiąt sześć"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(719094234693663034822824384220291, lang='pl'),
|
num2words(719094234693663034822824384220291, lang='pl'),
|
||||||
@@ -64,6 +68,18 @@ class Num2WordsPLTest(TestCase):
|
|||||||
"osiemdziesiąt cztery miliony dwieście dwadzieścia "
|
"osiemdziesiąt cztery miliony dwieście dwadzieścia "
|
||||||
"tysięcy dwieście dziewięćdzisiąt jeden"
|
"tysięcy dwieście dziewięćdzisiąt jeden"
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(
|
||||||
|
963301000001918264129471001047146102 * 10**30 + 1007,
|
||||||
|
lang='pl'
|
||||||
|
),
|
||||||
|
"dziewięćset sześćdziesiąt trzy decyliardy trzysta jeden "
|
||||||
|
"decylionów nonylion dziewięćset osiemnaście oktyliardów dwieście "
|
||||||
|
"sześćdziesiąt cztery oktyliony sto dwadzieścia dziewięć "
|
||||||
|
"septyliardów czterysta siedemdziesiąt jeden septylionów "
|
||||||
|
"sekstyliard czterdzieści siedem sekstylionów sto czterdzieści "
|
||||||
|
"sześć kwintyliardów sto dwa kwintyliony tysiąc siedem"
|
||||||
|
)
|
||||||
|
|
||||||
def test_to_ordinal(self):
|
def test_to_ordinal(self):
|
||||||
# @TODO: implement to_ordinal
|
# @TODO: implement to_ordinal
|
||||||
|
|||||||
Reference in New Issue
Block a user