# -*- coding: utf-8 -*- # Copyright (c) 2003, Taro Ogawa. All Rights Reserved. # Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved. # Copyright (c) 2017, Tufan Kaynak, Framras. 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 __future__ import unicode_literals from .base import Num2Word_Base class Num2Word_TR(Num2Word_Base): def __init__(self): self.precision = 2 self.negword = u"eksi" self.pointword = u"virgül" self.CURRENCY_UNIT = u"lira" self.CURRENCY_SUBUNIT = u"kuruş" 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. " \ u"Yazıya çevrilebilecek en büyük rakam {}." self.exclude_title = [] self.DECIMAL_SIGN = "," self.ORDINAL_SIGN = "." self.ZERO = u"sıfır" self.CARDINAL_ONES = { "1": u"bir", "2": u"iki", "3": u"üç", "4": u"dört", "5": u"beş", "6": u"altı", "7": u"yedi", "8": u"sekiz", "9": u"dokuz" } self.ORDINAL_ONES = { "1": u"birinci", "2": u"ikinci", "3": u"üçüncü", "4": u"dördüncü", "5": u"beşinci", "6": u"altıncı", "7": u"yedinci", "8": u"sekizinci", "9": u"dokuzuncu" } self.CARDINAL_TENS = { "1": u"on", "2": u"yirmi", "3": u"otuz", "4": u"kırk", "5": u"elli", "6": u"altmış", "7": u"yetmiş", "8": u"seksen", "9": u"doksan" } self.ORDINAL_TENS = { "1": u"onuncu", "2": u"yirminci", "3": u"otuzuncu", "4": u"kırkıncı", "5": u"ellinci", "6": u"altmışıncı", "7": u"yetmişinci", "8": u"sekseninci", "9": u"doksanıncı" } self.HUNDREDS = { "2": u"iki", "3": u"üç", "4": u"dört", "5": u"beş", "6": u"altı", "7": u"yedi", "8": u"sekiz", "9": u"dokuz" } self.CARDINAL_HUNDRED = (u"yüz",) self.ORDINAL_HUNDRED = (u"yüzüncü",) self.CARDINAL_TRIPLETS = { 1: u"bin", 2: u"milyon", 3: u"milyar", 4: u"trilyon", 5: u"katrilyon", 6: u"kentilyon" } self.ORDINAL_TRIPLETS = { 1: u"bininci", 2: u"milyonuncu", 3: u"milyarıncı", 4: u"trilyonuncu", 5: u"katrilyonuncu", 6: u"kentilyon" } self.MAXVAL = (10 ** ((len(self.CARDINAL_TRIPLETS) + 1) * 3)) - 1 self.integers_to_read = [] self.total_triplets_to_read = 0 self.total_digits_outside_triplets = 0 self.order_of_last_zero_digit = 0 def to_cardinal(self, value): wrd = "" is_cardinal = self.verify_cardinal(value) if not is_cardinal: return wrd if not int(value) == value: return self.to_cardinal_float(value) if str(value).startswith("-"): pre_word, value = self.negword, float(str(value)[1:]) else: pre_word, value = "", 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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], "" ) if self.integers_to_read[0][0] == "0": return self.ZERO return "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, wrd) elif i > 1: wrd += self.CARDINAL_HUNDRED[0] wrd += self.CARDINAL_TRIPLETS[i - 1] return "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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: wrd += self.CARDINAL_ONES.get( self.integers_to_read[0][ last_read_digit_order + 2], "" ) return "%s%s" % (pre_word, 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], "" ) 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 "%s%s" % (pre_word, 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 "%s%s" % (pre_word, 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], "" ) wrd += self.CARDINAL_TRIPLETS[i - 1] return "%s%s" % (pre_word, wrd) def to_cardinal_float(self, value): self.to_splitnum(value) wrd = "" wrd += self.pointword if len(self.integers_to_read[1]) >= 1: wrd += self.CARDINAL_TENS.get(self.integers_to_read[1][0], "") if len(self.integers_to_read[1]) == 2: wrd += self.CARDINAL_ONES.get(self.integers_to_read[1][1], "") if self.integers_to_read[0] == "0": wrd = self.ZERO + wrd else: wrd = self.to_cardinal(int(self.integers_to_read[0])) + wrd return wrd def verify_cardinal(self, value): iscardinal = True try: if not float(value) == value: iscardinal = False except (ValueError, TypeError): raise TypeError(self.errmsg_nonnum) if abs(value) >= self.MAXVAL: raise OverflowError(self.errmsg_toobig.format(value, self.MAXVAL)) return iscardinal def verify_ordinal(self, value): isordinal = True try: if not int(value) == value: isordinal = False if not abs(value) == value: raise TypeError(self.errmsg_negord.format(value)) except (ValueError, TypeError): raise TypeError(self.errmsg_nonnum) if abs(value) >= self.MAXVAL: raise OverflowError(self.errmsg_toobig.format(value, self.MAXVAL)) return isordinal def to_ordinal(self, value): wrd = "" isordinal = self.verify_ordinal(value) if isordinal: 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 ordinal x0 and return 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], "" ) 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], "" ) if self.integers_to_read[0][0] == "0": return u"sıfırıncı" 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.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.CARDINAL_HUNDRED[0] 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.CARDINAL_HUNDRED[0] 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], "" ) 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 ] 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 ] 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 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.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], "" ) wrd += self.CARDINAL_HUNDRED[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 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 ] 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], "" ) 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 ] 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": 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] return wrd elif i > 1: wrd += self.CARDINAL_HUNDRED[0] wrd += self.ORDINAL_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.ORDINAL_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.ORDINAL_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: wrd += self.ORDINAL_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], "" ) 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.ORDINAL_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.ORDINAL_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 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], "" ) wrd += self.CARDINAL_TRIPLETS[i - 1] return wrd def to_ordinal_num(self, value): self.verify_ordinal(value) return "%s%s" % (value, self.to_ordinal(value)[-4:]) 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:] ] else: 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 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 okunacak = list(self.integers_to_read[0][::-1]) self.order_of_last_zero_digit = 0 found = 0 for i in range(len(okunacak) - 1): if int(okunacak[i]) == 0 and found == 0: self.order_of_last_zero_digit = i + 1 else: found = 1 def to_currency(self, value): if int(value) == 0: return u"bedelsiz" valueparts = self.to_cardinal(value).split(self.pointword) if len(valueparts) == 1: return valueparts[0] + self.CURRENCY_UNIT if len(valueparts) == 2: return self.CURRENCY_UNIT.join(valueparts) + \ self.CURRENCY_SUBUNIT