diff --git a/README.md b/README.md index a2eeb9b..77b3033 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ ## Bahttext Tool to convert currency number to Thai text number +Support Python2 and Python3 ## Installation ``` @@ -14,5 +15,5 @@ pip install bahttext >>> number = 12345.21 >>> print bahttext(number) หนึ่งหมื่นสองพันสามร้อยสี่สิบห้าบาทยี่สิบเอ็ดสตางค์ ->>> +>>> ``` diff --git a/bahttext/__init__.py b/bahttext/__init__.py index 99e3a38..938a9e5 100644 --- a/bahttext/__init__.py +++ b/bahttext/__init__.py @@ -4,9 +4,12 @@ # All rights reserved. check LICENSE for more detail. # Seksan Poltree , 2014. -thainum = [u"ศูนย์", u"หนึ่ง", u"สอง", u"สาม", - u"สี่", u"ห้า", u"หก", u"เจ็ด", u"แปด", u"เก้า"] -thaimulti = [u"", u"สิบ", u"ร้อย", u"พัน", u"หมื่น", u"แสน", u"ล้าน"] +from __future__ import unicode_literals +# from builtins import str + +thainum = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', + 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า'] +thaimulti = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'] def split_million_sequence(seq): @@ -19,22 +22,22 @@ def split_million_sequence(seq): def convert_special_twodigit(int_string): - baht_string = u'' + baht_string = '' if int_string[0] == '1': pass elif int_string[0] == '2': - baht_string += u"ยี่" + baht_string += 'ยี่' elif int_string[0] in "3456789": baht_string += thainum[int(int_string[0])] if int_string[0] != '0': - baht_string += u'สิบ' + baht_string += 'สิบ' if int_string[1] == '0': pass elif int_string[1] == '1': - baht_string += u'เอ็ด' + baht_string += 'เอ็ด' else: baht_string += thainum[int(int_string[1])] @@ -43,7 +46,7 @@ def convert_special_twodigit(int_string): def convert_multiple_million(int_string, is_million=False): - baht_string = u'' + baht_string = '' # integer number part if len(int_string) == 1: @@ -65,11 +68,11 @@ def convert_multiple_million(int_string, is_million=False): def bahttext(input_float): - baht_string = u'' + baht_string = '' if input_float < 0: input_float *= -1 - baht_string += u'ลบ' + baht_string += 'ลบ' float_string = '%0.2f' % input_float input_string = str(float_string).split('.') @@ -91,14 +94,14 @@ def bahttext(input_float): million_group_string, is_million) if million_index > 0: - baht_string += u'ล้าน' + baht_string += 'ล้าน' million_index -= 1 - baht_string += u'บาท' + baht_string += 'บาท' # decimal number part if int(decimal_string) == 0: - baht_string += u'ถ้วน' + baht_string += 'ถ้วน' else: if len(decimal_string) == 1: @@ -107,6 +110,6 @@ def bahttext(input_float): elif len(decimal_string) == 2: baht_string += convert_special_twodigit(decimal_string) - baht_string += u'สตางค์' + baht_string += 'สตางค์' return baht_string diff --git a/setup.py b/setup.py index 746641d..02bbb2c 100644 --- a/setup.py +++ b/setup.py @@ -3,12 +3,12 @@ from distutils.core import setup setup(name='bahttext', - version='1.0', + version='1.0.2', description='Tool for convert currency number to Thai text', author='Seksan Poltree', author_email='seksan@morange.co.th', - url='https://github.com/morangesolution/bahttext', - download_url='https://github.com/morangesolution/bahttext/tarball/master', + url='https://github.com/sekz/bahttext', + download_url='https://github.com/sekz/bahttext/tarball/master', packages=['bahttext'], license="BSD", ) diff --git a/test_bahttext.py b/test_bahttext.py index 6df59e2..5d43607 100644 --- a/test_bahttext.py +++ b/test_bahttext.py @@ -4,7 +4,8 @@ # This file is distributed under the same license as the bahttext package. # All rights reserved. # Seksan Poltree , 2014. - +from __future__ import unicode_literals +from builtins import str import unittest from bahttext import bahttext @@ -12,7 +13,7 @@ class TestBahtText(unittest.TestCase): def test_input_is_a_number_then_can_convert_to_string(self): - self.assertIsInstance(bahttext(1.0), unicode) + self.assertIsInstance(bahttext(1.0), str) def test_input_is_not_number_then_raise_error(self): with self.assertRaises(TypeError) as ex: @@ -20,70 +21,70 @@ def test_input_is_not_number_then_raise_error(self): self.assertIsInstance(ex.exception, TypeError) def test_input_integer_one_digit_can_convert(self): - self.assertEqual(bahttext(0.0), u'ศูนย์บาทถ้วน') - self.assertEqual(bahttext(1.0), u'หนึ่งบาทถ้วน') - self.assertEqual(bahttext(2.0), u'สองบาทถ้วน') - self.assertEqual(bahttext(5.0), u'ห้าบาทถ้วน') + self.assertEqual(bahttext(0.0), 'ศูนย์บาทถ้วน') + self.assertEqual(bahttext(1.0), 'หนึ่งบาทถ้วน') + self.assertEqual(bahttext(2.0), 'สองบาทถ้วน') + self.assertEqual(bahttext(5.0), 'ห้าบาทถ้วน') def test_number_in_multiple_could_show_sip(self): - self.assertEqual(bahttext(10.0), u'สิบบาทถ้วน') - self.assertEqual(bahttext(20.0), u'ยี่สิบบาทถ้วน') - self.assertEqual(bahttext(50.0), u'ห้าสิบบาทถ้วน') - self.assertEqual(bahttext(11.0), u'สิบเอ็ดบาทถ้วน') - self.assertEqual(bahttext(15.0), u'สิบห้าบาทถ้วน') + self.assertEqual(bahttext(10.0), 'สิบบาทถ้วน') + self.assertEqual(bahttext(20.0), 'ยี่สิบบาทถ้วน') + self.assertEqual(bahttext(50.0), 'ห้าสิบบาทถ้วน') + self.assertEqual(bahttext(11.0), 'สิบเอ็ดบาทถ้วน') + self.assertEqual(bahttext(15.0), 'สิบห้าบาทถ้วน') def test_input_one_interger_wth_decimal_can_convert(self): - self.assertEqual(bahttext(1.10), u'หนึ่งบาทสิบสตางค์') - self.assertEqual(bahttext(2.50), u'สองบาทห้าสิบสตางค์') - self.assertEqual(bahttext(3.75), u'สามบาทเจ็ดสิบห้าสตางค์') + self.assertEqual(bahttext(1.10), 'หนึ่งบาทสิบสตางค์') + self.assertEqual(bahttext(2.50), 'สองบาทห้าสิบสตางค์') + self.assertEqual(bahttext(3.75), 'สามบาทเจ็ดสิบห้าสตางค์') def test_number_ending_with_one_could_show_edd(self): - self.assertEqual(bahttext(4.81), u'สี่บาทแปดสิบเอ็ดสตางค์') + self.assertEqual(bahttext(4.81), 'สี่บาทแปดสิบเอ็ดสตางค์') def test_number_start_with_two_could_show_yee(self): - self.assertEqual(bahttext(2.21), u'สองบาทยี่สิบเอ็ดสตางค์') + self.assertEqual(bahttext(2.21), 'สองบาทยี่สิบเอ็ดสตางค์') def test_number_hundred_should_show_roi(self): - self.assertEqual(bahttext(100.0), u'หนึ่งร้อยบาทถ้วน') - self.assertEqual(bahttext(101.0), u'หนึ่งร้อยเอ็ดบาทถ้วน') - self.assertEqual(bahttext(200.0), u'สองร้อยบาทถ้วน') - self.assertEqual(bahttext(201.0), u'สองร้อยเอ็ดบาทถ้วน') - - def test_number_thoundsand_should_show_pan(self): - self.assertEqual(bahttext(1000.0), u'หนึ่งพันบาทถ้วน') - self.assertEqual(bahttext(2000.10), u'สองพันบาทสิบสตางค์') + self.assertEqual(bahttext(100.0), 'หนึ่งร้อยบาทถ้วน') + self.assertEqual(bahttext(101.0), 'หนึ่งร้อยเอ็ดบาทถ้วน') + self.assertEqual(bahttext(200.0), 'สองร้อยบาทถ้วน') + self.assertEqual(bahttext(201.0), 'สองร้อยเอ็ดบาทถ้วน') + + def test_number_thousand_should_show_pan(self): + self.assertEqual(bahttext(1000.0), 'หนึ่งพันบาทถ้วน') + self.assertEqual(bahttext(2000.10), 'สองพันบาทสิบสตางค์') self.assertEqual( - bahttext(3211.51), u'สามพันสองร้อยสิบเอ็ดบาทห้าสิบเอ็ดสตางค์') - self.assertEqual(bahttext(8000.31), u'แปดพันบาทสามสิบเอ็ดสตางค์') + bahttext(3211.51), 'สามพันสองร้อยสิบเอ็ดบาทห้าสิบเอ็ดสตางค์') + self.assertEqual(bahttext(8000.31), 'แปดพันบาทสามสิบเอ็ดสตางค์') - def test_number_ten_thoundsand_should_show_muern(self): - self.assertEqual(bahttext(30000.0), u'สามหมื่นบาทถ้วน') + def test_number_ten_thousand_should_show_muern(self): + self.assertEqual(bahttext(30000.0), 'สามหมื่นบาทถ้วน') self.assertEqual( - bahttext(98765.10), u'เก้าหมื่นแปดพันเจ็ดร้อยหกสิบห้าบาทสิบสตางค์') + bahttext(98765.10), 'เก้าหมื่นแปดพันเจ็ดร้อยหกสิบห้าบาทสิบสตางค์') self.assertEqual( - bahttext(30211.21), u'สามหมื่นสองร้อยสิบเอ็ดบาทยี่สิบเอ็ดสตางค์') + bahttext(30211.21), 'สามหมื่นสองร้อยสิบเอ็ดบาทยี่สิบเอ็ดสตางค์') - def test_number_hundred_thoundsand_should_show_saan(self): - self.assertEqual(bahttext(800000.0), u'แปดแสนบาทถ้วน') + def test_number_hundred_thousand_should_show_saan(self): + self.assertEqual(bahttext(800000.0), 'แปดแสนบาทถ้วน') self.assertEqual( - bahttext(258065.81), u'สองแสนห้าหมื่นแปดพันหกสิบห้าบาทแปดสิบเอ็ดสตางค์') + bahttext(258065.81), 'สองแสนห้าหมื่นแปดพันหกสิบห้าบาทแปดสิบเอ็ดสตางค์') def test_number_million_should_show_laan(self): - self.assertEqual(bahttext(3500000.0), u'สามล้านห้าแสนบาทถ้วน') + self.assertEqual(bahttext(3500000.0), 'สามล้านห้าแสนบาทถ้วน') def test_number_multiple_million_should_show_multiple_laan(self): - self.assertEqual(bahttext(12000000.0), u'สิบสองล้านบาทถ้วน') - self.assertEqual(bahttext(21000000.0), u'ยี่สิบเอ็ดล้านบาทถ้วน') + self.assertEqual(bahttext(12000000.0), 'สิบสองล้านบาทถ้วน') + self.assertEqual(bahttext(21000000.0), 'ยี่สิบเอ็ดล้านบาทถ้วน') self.assertEqual( - bahttext(51000000000000.51), u'ห้าสิบเอ็ดล้านล้านบาทห้าสิบเอ็ดสตางค์') + bahttext(51000000000000.51), 'ห้าสิบเอ็ดล้านล้านบาทห้าสิบเอ็ดสตางค์') self.assertEqual( - bahttext(10000000680000.51), u'สิบล้านล้านหกแสนแปดหมื่นบาทห้าสิบเอ็ดสตางค์') + bahttext(10000000680000.51), 'สิบล้านล้านหกแสนแปดหมื่นบาทห้าสิบเอ็ดสตางค์') def test_negative_minus_prefix_number_should_print_loob(self): - self.assertEqual(bahttext(-1.10), u'ลบหนึ่งบาทสิบสตางค์') - self.assertEqual(bahttext(-1000.0), u'ลบหนึ่งพันบาทถ้วน') + self.assertEqual(bahttext(-1.10), 'ลบหนึ่งบาทสิบสตางค์') + self.assertEqual(bahttext(-1000.0), 'ลบหนึ่งพันบาทถ้วน') self.assertEqual( - bahttext(-258065.81), u'ลบสองแสนห้าหมื่นแปดพันหกสิบห้าบาทแปดสิบเอ็ดสตางค์') + bahttext(-258065.81), 'ลบสองแสนห้าหมื่นแปดพันหกสิบห้าบาทแปดสิบเอ็ดสตางค์') if __name__ == '__main__': unittest.main()