first commit
This commit is contained in:
+174
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
| @Author Kukuh Prabowo
|
||||
| 2015
|
||||
| version 0.1
|
||||
| @return String
|
||||
*/
|
||||
|
||||
(function( $ ) {
|
||||
|
||||
$.fn.terbilang = function( options ) {
|
||||
|
||||
var txtsrc;
|
||||
|
||||
var setting = $.extend({
|
||||
lang: 'id',
|
||||
output: $('#terbilang-output')
|
||||
}, options);
|
||||
|
||||
var IDreadThousand = function (n,dg,snum,thousandDesc) {
|
||||
var s='';
|
||||
var d1=Math.floor(n/100);
|
||||
var d2=Math.floor((n-(d1*100))/10);
|
||||
var d3=n-(d1*100)-(d2*10);
|
||||
|
||||
if (d1>0) {
|
||||
if (d1==1) {
|
||||
s=s+'seratus ';
|
||||
} else {
|
||||
s=s+snum[d1]+' ratus ';
|
||||
}
|
||||
}
|
||||
|
||||
if (d2>0) {
|
||||
if (d2==1) {
|
||||
switch(d3) {
|
||||
case 0: s=s+'sepuluh ';
|
||||
break;
|
||||
case 1: s=s+'sebelas ';
|
||||
break;
|
||||
default: s=s+snum[d3]+' belas ';
|
||||
}
|
||||
} else {
|
||||
s=s+snum[d2]+' puluh ';
|
||||
}
|
||||
}
|
||||
|
||||
if (d3>0) {
|
||||
if ((d2>1)||(d2==0)) {
|
||||
if ((dg==1)&(d3==1)) {
|
||||
s=s+'se';
|
||||
} else {
|
||||
s=s+snum[d3]+' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
var ENreadThousand = function (n,snum,thousandDesc,steens,stens) {
|
||||
var s='';
|
||||
var d1=Math.floor(n/100);
|
||||
var d2=Math.floor((n-(d1*100))/10);
|
||||
var d3=n-(d1*100)-(d2*10);
|
||||
|
||||
if (d1>0) {
|
||||
s=s+snum[d1]+' hundred ';
|
||||
}
|
||||
|
||||
if (d2>0) {
|
||||
if (d2==1) {
|
||||
s=s+steens[d3]+' ';
|
||||
} else {
|
||||
s=s+stens[d2]+' ';
|
||||
}
|
||||
}
|
||||
|
||||
if (d3>0) {
|
||||
if ((d2>1)||(d2==0)) {
|
||||
s=s+snum[d3]+' ';
|
||||
}
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
var readAll = function (x,lang) {
|
||||
var s='';
|
||||
var i=0;
|
||||
var isfailed=false;
|
||||
|
||||
switch(lang) {
|
||||
case 'id' : var snum=new Array('nol','satu','dua','tiga','empat','lima','enam','tujuh','delapan','sembilan');
|
||||
var thousandDesc=new Array('','ribu','juta','miliar','triliun');
|
||||
break;
|
||||
case 'en' : var snum=new Array('zero','one','two','three','four','five','six','seven','eight','nine');
|
||||
var thousandDesc=new Array('','thousand','million','billion','trillion');
|
||||
var steens=new Array('ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen');
|
||||
var stens=new Array('','','twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety');
|
||||
break;
|
||||
default: alert('Unknown language');
|
||||
isfailed=true;
|
||||
}
|
||||
|
||||
if (isNaN(x)) {
|
||||
isfailed=true;
|
||||
alert('Not a number!');
|
||||
} else {
|
||||
x=parseFloat(x);
|
||||
}
|
||||
|
||||
if (isfailed==false) {
|
||||
do {
|
||||
var groupNumbers = Math.round(((Math.floor(x)/1000)-Math.floor((Math.floor(x)/1000)))*1000);
|
||||
if (lang=='id') {
|
||||
s=IDreadThousand(groupNumbers,i,snum,thousandDesc)+thousandDesc[i]+' '+s;
|
||||
if (x==0) {s='nol'};
|
||||
}
|
||||
if (lang=='en') {
|
||||
s=ENreadThousand(groupNumbers,snum,thousandDesc,steens,stens)+thousandDesc[i]+' '+s;
|
||||
if (x==0) {s='zero'};
|
||||
}
|
||||
x=Math.floor(Math.floor(x)/1000);
|
||||
i++;
|
||||
} while (x>0);
|
||||
return s.replace(/^\s*|\s(?=\s)|\s*$/g, '');
|
||||
} else {
|
||||
return 'NaN';
|
||||
}
|
||||
}
|
||||
|
||||
var readNumbers = function () {
|
||||
var txtout = setting.output;
|
||||
switch(setting.lang) {
|
||||
case 'id' : var lang = setting.lang;
|
||||
var cur='rupiah';
|
||||
var cen='sen';
|
||||
break;
|
||||
case 'en' : var lang = setting.lang;
|
||||
var cur='dollar';
|
||||
var cen='cent';
|
||||
break;
|
||||
}
|
||||
|
||||
var ssrc = txtsrc.val();
|
||||
// window.alert(ssrc);
|
||||
var ssrc = txtsrc.val().split(/[.]|[,]/);
|
||||
var sout=readAll(ssrc,lang)+' '+cur;
|
||||
var sout1='';
|
||||
if (ssrc[1]!=undefined) {
|
||||
sout1=readAll(ssrc[1].substr(0,2),lang)+' '+cen;
|
||||
}
|
||||
if ((sout.search('NaN')!=-1)||(sout1.search('NaN')!=-1)) {
|
||||
txtsrc.val('');
|
||||
txtout.val('');
|
||||
} else {
|
||||
txtout.val(sout+' '+sout1);
|
||||
}
|
||||
}
|
||||
|
||||
return this.each(function() {
|
||||
var idsrc = $(this);
|
||||
$(document).on('keyup change', idsrc, function(e) {
|
||||
txtsrc = idsrc;
|
||||
if (txtsrc.val() != '') {
|
||||
readNumbers();
|
||||
} else {
|
||||
txtsrc.val('');
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
} (jQuery));
|
||||
Reference in New Issue
Block a user