def test_parse_USA(self): self.assertEqual(tamilstr2num(["ஒரு", "மில்லியன்", "பத்து", "ஆயிரம்"]), 1e6 + 1e4) self.assertEqual( tamilstr2num(["ஒரு", "மில்லியன்", "ஆயிரம்", "புள்ளி", "ஐந்து"]), 1001000.5) self.assertEqual(tamilstr2num(["இருபது", "டிரில்லியன்"]), 20e12)
def கணக்கிடு( _தொடர் ): தமிழ்_உரை_தொடர் = re.sub('\s+',' ',_தொடர்) # செயல்சார்புகளை குறியீடுகளாக மாற்றவும் for பெயர்,குறியீடு in செயல்சார்புகள்.items(): தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர்,குறியீடு[0]) இடைநிலை0=list() இடைநிலை1=list() for துண்டு in தமிழ்_உரை_தொடர்.split(' '): if துண்டு in செயல்சார்புகள்_குறியீடுகள்: if துண்டு in ('(',')',) and len(இடைநிலை1) == 0: இடைநிலை0.append(துண்டு) else: மதிப்பு=tamil.numeral.tamilstr2num(இடைநிலை1) இடைநிலை0.append('%g'%மதிப்பு) இடைநிலை0.append(துண்டு) இடைநிலை1=list() else: இடைநிலை1.append(துண்டு) # கடைசி செயல்சார்பின் எண் என்ன? விட்டுப்போகாமல் பாருங்கள். if len(இடைநிலை1) > 0: மதிப்பு=tamilstr2num(இடைநிலை1) இடைநிலை0.append('%g'%மதிப்பு) # மீளமைப்பு செய்துகொள்ளுங்கள் ... தமிழ்_உரை_தொடர் = ' '.join(இடைநிலை0) if வழுநீகால்_இயக்கம்: அச்சிடு(தமிழ்_உரை_தொடர்) விடை = கணி(தமிழ்_உரை_தொடர்) # இருவகைகளில் எழுதிப்பார்க்கவும். அச்சிடு(num2tamilstr( விடை ) ) அச்சிடு(num2tamilstr_american( விடை ) ) return விடை
def கணக்கிடு(_தொடர்): """" @_தொடர் : Tamil sentence with number to be parsed and evaluated. Supported operators are +, -, /, * spelled out as கூட்டல், கழித்தல், பெருக்கல் and வகுத்தல் @return @விடை result variable of the computation """ தமிழ்_உரை_தொடர் = re.sub('\s+', ' ', _தொடர்) # செயல்சார்புகளை குறியீடுகளாக மாற்றவும் for பெயர், குறியீடு in செயல்சார்புகள்.items(): தமிழ்_உரை_தொடர் = தமிழ்_உரை_தொடர்.replace(பெயர், குறியீடு[0]) இடைநிலை0 = list() இடைநிலை1 = list() for துண்டு in தமிழ்_உரை_தொடர்.split(' '): if துண்டு in செயல்சார்புகள்_குறியீடுகள்: if துண்டு in ('(', ')',) and len(இடைநிலை1) == 0: இடைநிலை0.append(துண்டு) else: மதிப்பு = tamil.numeral.tamilstr2num(இடைநிலை1) இடைநிலை0.append('%g' % மதிப்பு) இடைநிலை0.append(துண்டு) இடைநிலை1 = list() else: இடைநிலை1.append(துண்டு) # கடைசி செயல்சார்பின் எண் என்ன? விட்டுப்போகாமல் பாருங்கள். if len(இடைநிலை1) > 0: மதிப்பு = tamilstr2num(இடைநிலை1) இடைநிலை0.append('%g' % மதிப்பு) # மீளமைப்பு செய்துகொள்ளுங்கள் ... தமிழ்_உரை_தொடர் = ' '.join(இடைநிலை0) if வழுநீகால்_இயக்கம்: அச்சிடு(தமிழ்_உரை_தொடர்) விடை = கணி(தமிழ்_உரை_தொடர்) # இருவகைகளில் எழுதிப்பார்க்கவும். அச்சிடு(num2tamilstr(விடை)) அச்சிடு(num2tamilstr_american(விடை)) return விடை
def test_parse_fractional(self): self.assertEqual(tamilstr2num(["இருபது", "ஆயிரம்"]), 20e3) self.assertEqual(tamilstr2num(["ஆயிரம்", "புள்ளி", "ஐந்து"]), 1000.5)
def test_20lakh_crores(self): self.assertEqual(tamilstr2num(["இருபது", "இலட்சம்", "கோடி"]), 20e5 * 1e7)
def test_1lakh_crores(self): self.assertEqual(tamilstr2num("ஒரு இலட்சம் கோடி".split(' ')), 1000000000000)
def test_parse(self): self.assertEqual(tamilstr2num("இருநூற்று நாற்பத்தைந்து".split(' ')), 245.0) self.assertEqual( tamilstr2num("நூற்றி இரண்டு ஆயிரத்து நாநூற்று பத்து".split(' ')), 102410.0) self.assertEqual(tamilstr2num(["ஓர்", "ஆயிரம்"]), 1000.0) self.assertEqual(tamilstr2num(["ஆயிரம்"]), 1000.0) self.assertEqual(tamilstr2num(["மில்லியன்"]), 1e6) self.assertEqual(tamilstr2num(["கோடி"]), 1e7) self.assertEqual(tamilstr2num(["பில்லியன்"]), 1e9) self.assertEqual(tamilstr2num(["பத்து", "கோடி"]), 1e8) self.assertEqual(tamilstr2num(["பத்து", "கோடி", "ஐம்பது"]), 1e8 + 50) self.assertEqual( tamilstr2num("ஓர் ஆயிரத்து அறுநூற்று ஒன்பது".split(' ')), 1000 + 600 + 9) self.assertEqual(tamilstr2num(["இருபது", "இலட்சம்"]), 20e5) self.assertEqual(tamilstr2num(["இருபது", "இலட்சம்", "ஒன்று"]), 20e5 + 1) self.assertEqual(tamilstr2num(["இருபது", "ஆயிரம்"]), 20e3) self.assertEqual(tamilstr2num(["இருபது", "ஆயிரம்", "கோடி"]), 20e3 * 1e7)
def test_compound(self): self.assertEqual(2000.0, tamilstr2num("இரண்டாயிரம்"))