From 8fde057760575b1b62f281ce1330e01f2a22b316 Mon Sep 17 00:00:00 2001 From: Marek Madejski Date: Mon, 3 Dec 2018 09:57:37 +0100 Subject: [PATCH 1/3] Update lang_PL.py - typo in "kwadryliard" - expanded long scale up to decilliard (10^63) - PEP8 compliance --- num2words/lang_PL.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/num2words/lang_PL.py b/num2words/lang_PL.py index 4289177..f9377c4 100644 --- a/num2words/lang_PL.py +++ b/num2words/lang_PL.py @@ -70,16 +70,27 @@ HUNDREDS = { } THOUSANDS = { - 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 - 2: ('milion', 'miliony', 'milionów'), # 10^6 - 3: ('miliard', 'miliardy', 'miliardów'), # 10^9 - 4: ('bilion', 'biliony', 'bilionów'), # 10^12 - 5: ('biliard', 'biliardy', 'biliardów'), # 10^15 - 6: ('trylion', 'tryliony', 'trylionów'), # 10^18 - 7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21 - 8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24 - 9: ('kwaryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27 - 10: ('kwintylion', 'kwintyliony', 'kwintylionów'), # 10^30 + 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 + 2: ('milion', 'miliony', 'milionów'), # 10^6 + 3: ('miliard', 'miliardy', 'miliardów'), # 10^9 + 4: ('bilion', 'biliony', 'bilionów'), # 10^12 + 5: ('biliard', 'biliardy', 'biliardów'), # 10^15 + 6: ('trylion', 'tryliony', 'trylionów'), # 10^18 + 7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21 + 8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24 + 9: ('kwadryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27 + 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 } From f26c3a139aeadd74a2608d8c760181399aa97d68 Mon Sep 17 00:00:00 2001 From: Marek Madejski Date: Mon, 3 Dec 2018 11:05:36 +0100 Subject: [PATCH 2/3] Update test_pl.py test for really big number's Polish name --- tests/test_pl.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test_pl.py b/tests/test_pl.py index c8a8462..0dbd97d 100644 --- a/tests/test_pl.py +++ b/tests/test_pl.py @@ -64,6 +64,22 @@ class Num2WordsPLTest(TestCase): "osiemdziesiąt cztery miliony dwieście dwadzieścia " "tysięcy dwieście dziewięćdzisiąt jeden" ) + self.assertEqual( + num2words( + 963301000001918264129471042047146102350812074235000101020000120324, + 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 " + "czterdzieści dwa sekstyliardy czterdzieści siedem sekstylionów " + "sto czterdzieści sześć kwintyliardów sto dwa kwintyliony trzysta " + "pięćdziesiąt kwadryliardów osiemset dwanaście kwadrylionów " + "siedemdziesiąt cztery tryliardy dwieście trzydzieści pięć " + "trylionów sto jeden bilionów dwadzieścia miliardów sto " + "dwadzieścia tysięcy trzysta dwadzieścia cztery" + ) def test_to_ordinal(self): # @TODO: implement to_ordinal From 52fb935d8cf9570b977dbb2970f51356656b27dd Mon Sep 17 00:00:00 2001 From: Marek Madejski Date: Fri, 28 Dec 2018 11:57:12 +0100 Subject: [PATCH 3/3] PL: regular names for powers of thousand Names for powers of thousand are now built instead of being hardcoded - less error-prone and more concise. --- num2words/lang_PL.py | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/num2words/lang_PL.py b/num2words/lang_PL.py index 4b97a5f..2fa52f7 100644 --- a/num2words/lang_PL.py +++ b/num2words/lang_PL.py @@ -17,6 +17,8 @@ from __future__ import unicode_literals +import itertools + from .base import Num2Word_Base from .utils import get_digits, splitbyx @@ -71,29 +73,27 @@ HUNDREDS = { } THOUSANDS = { - 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 - 2: ('milion', 'miliony', 'milionów'), # 10^6 - 3: ('miliard', 'miliardy', 'miliardów'), # 10^9 - 4: ('bilion', 'biliony', 'bilionów'), # 10^12 - 5: ('biliard', 'biliardy', 'biliardów'), # 10^15 - 6: ('trylion', 'tryliony', 'trylionów'), # 10^18 - 7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21 - 8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24 - 9: ('kwadryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27 - 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 + 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 } +prefixes = ( # 10^(6*x) + "mi", # 10^6 + "bi", # 10^12 + "try", # 10^18 + "kwadry", # 10^24 + "kwinty", # 10^30 + "seksty", # 10^36 + "septy", # 10^42 + "okty", # 10^48 + "nony", # 10^54 + "decy" # 10^60 +) +suffixes = ("lion", "liard") # 10^x or 10^(x+3) + +for idx, (p, s) in enumerate(itertools.product(prefixes, suffixes)): + name = p + s + THOUSANDS[idx+2] = (name, name + 'y', name + 'ów') + class Num2Word_PL(Num2Word_Base): CURRENCY_FORMS = {