persian-number
Version:
A Library that Makes You Able to Convert any Number to Persian Word.
15 lines (14 loc) • 6.33 kB
JavaScript
"use strict";var oneDigit=["\u0635\u0641\u0631","\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u0634\u0634","\u0647\u0641\u062A","\u0647\u0634\u062A","\u0646\u0647"],twoDigits={10:"\u062F\u0647",11:"\u06CC\u0627\u0632\u062F\u0647",12:"\u062F\u0648\u0627\u0632\u062F\u0647",13:"\u0633\u06CC\u0632\u062F\u0647",14:"\u0686\u0647\u0627\u0631\u062F\u0647",15:"\u067E\u0627\u0646\u0632\u062F\u0647",16:"\u0634\u0627\u0646\u0632\u062F\u0647",17:"\u0647\u0641\u062F\u0647",18:"\u0647\u062C\u062F\u0647",19:"\u0646\u0648\u0632\u062F\u0647",20:"\u0628\u06CC\u0633\u062A",30:"\u0633\u06CC",40:"\u0686\u0647\u0644",50:"\u067E\u0646\u062C\u0627\u0647",60:"\u0634\u0635\u062A",70:"\u0647\u0641\u062A\u0627\u062F",80:"\u0647\u0634\u062A\u0627\u062F",90:"\u0646\u0648\u062F"},threeDigits={100:"\u0635\u062F",200:"\u062F\u0648\u06CC\u0633\u062A",300:"\u0633\u06CC\u0635\u062F",400:"\u0686\u0647\u0627\u0631\u0635\u062F",500:"\u067E\u0627\u0646\u0635\u062F",600:"\u0634\u0634 \u0635\u062F",700:"\u0647\u0641\u062A \u0635\u062F",800:"\u0647\u0634\u062A \u0635\u062F",900:"\u0646\u0647 \u0635\u062F"},types=["\u0633\u067E\u062A\u06CC\u0644\u06CC\u0627\u0631\u062F","\u0633\u067E\u062A\u06CC\u0644\u06CC\u0648\u0646","\u0633\u06A9\u0633\u062A\u06CC\u0644\u06CC\u0627\u0631\u062F","\u0633\u06A9\u0633\u062A\u06CC\u0644\u06CC\u0648\u0646","\u06A9\u0648\u0627\u0646\u062A\u06CC\u0646\u06CC\u0627\u0631\u062F","\u06A9\u0648\u06CC\u0646\u062A\u06CC\u0644\u06CC\u0648\u0646","\u06A9\u0627\u062F\u0631\u06CC\u0644\u06CC\u0627\u0631\u062F","\u06A9\u0648\u0622\u062F\u0631\u06CC\u0644\u06CC\u0648\u0646","\u062A\u0631\u06CC\u0644\u06CC\u0627\u0631\u062F","\u062A\u0631\u06CC\u0644\u06CC\u0648\u0646","\u0628\u06CC\u0644\u06CC\u0627\u0631\u062F","\u0628\u06CC\u0644\u06CC\u0648\u0646","\u0645\u06CC\u0644\u06CC\u0627\u0631\u062F","\u0645\u06CC\u0644\u06CC\u0648\u0646","\u0647\u0632\u0627\u0631",""],decimalTypes=["\u062F\u0647\u0645","\u0635\u062F\u0645","\u0647\u0632\u0627\u0631\u0645","\u062F\u0647 \u0647\u0632\u0627\u0631\u0645"],numbers=[],decimals=[],convert=function convert(a){var b="",c="",d="",e="";if(isPercent(a)&&(a=a.replace("%",""),e=" \u062F\u0631\u0635\u062F"),a=getString(a),""==a)return"";if(sliceNumber(a),isNegative(a)&&(b="\u0645\u0646\u0641\u06CC "),a=a.replace("-",""),isDecimal(a)){var f=a.indexOf("."),g="";c=a.substr(f+1,a.length),a=a.substr(0,f),g=parseInt(c).toString(),1===g.length&&"0"!=g?(d+=oneDigit[g]+" ",d+=decimalTypes[c.length-1]):(d=calculateDigits(decimals),d+=" "+decimalTypes[c.length-1])}return 1===a.length?d?"0"==a?b+d+e:b+oneDigit[a]+" \u0645\u0645\u06CC\u0632 "+d+e:b+oneDigit[a]+e:d?b+calculateDigits(numbers)+" \u0645\u0645\u06CC\u0632 "+d+e:b+calculateDigits(numbers)+e},sliceNumber=function sliceNumber(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:",",c="",e="",f="",g="",h="";if(isPercent(a)&&(a=a.replace("%",""),c="%"),a=getString(a),""==a)return"";if(isNegative(a)&&(e="-"),a=a.replace("-",""),isDecimal(a)){var i=a.indexOf(".");f=a.substr(i+1,a.length),a=a.substr(0,i)}return(g=putSeparator(a,b),numbers=g.split(b),!f)?e+g+c:(h=putSeparator(f,b),decimals=h.split(b),e+g+"."+h+c)},putSeparator=function putSeparator(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:",";if("string"!=typeof a)return"";if(4>a.length)return a;for(var c="",d=a.length-1,e=0;0<=d;d--)3==e&&(c+=b,e=0),c+=a[d],e++;return c=c.split("").reverse().join(""),c},calculateDigits=function calculateDigits(a){for(var b=Math.floor,c="",d=0;d<a.length;d++){var e=parseInt(a[d]),f=e,g=100*b(f/100);f%=100;var h=10*b(f/10),j=f%10;c+=0!=d&&e?" \u0648 ":"",c+=getPersian(g,h,j,d,a)+" "+getType(d,a)}return c.trim()},getPersian=function getPersian(a,b,c,d,e){var f="",g=b+c;return(threeDigits[a]&&(f+=0<c||0<b?threeDigits[a]+" \u0648 ":threeDigits[a]),twoDigits[g])?(f+=twoDigits[g]+" ",f):(twoDigits[b]&&(f+=twoDigits[b]+" \u0648 "),2===e.length&&0===d&&1===c&&0===b&&0===a)?f:2<e.length&&d===e.length-2&&1===c&&0===b&&0===a?f:(0<c&&(f+=oneDigit[c]+" "),f)},getType=function getType(a,b){var c=parseInt(b[a]);if(isNaN(c))return"";if(!c)return"";var d=b.length-a,e=types.length-d;return types[e]},isNegative=function isNegative(a){return(a=getString(a),!!a)&&!("-"!=a[0])&&(a=a.replace("-",""),"0"!=a)},isPercent=function isPercent(a){if("string"!=typeof a)return!1;var b=a.indexOf("%"),c=a.lastIndexOf("%");return!(b!=c)&&0<b},getString=function getString(a){return void 0===a?"":null===a?"":isNaN(a)?"":"number"==typeof a?a.toString():a.trim()},isDecimal=function isDecimal(a){if(a=getString(a),""==a)return!1;var b=a.indexOf("."),c=a.lastIndexOf(".");return b==c&&0<b},convertEnToPe=function convertEnToPe(a){if(null==a||a==null)return"";"number"==typeof a&&(a=a.toString());for(var b="",c=0;c<a.length;c++)switch(a[c]){case"0":b+="\u06F0";break;case"1":b+="\u06F1";break;case"2":b+="\u06F2";break;case"3":b+="\u06F3";break;case"4":b+="\u06F4";break;case"5":b+="\u06F5";break;case"6":b+="\u06F6";break;case"7":b+="\u06F7";break;case"8":b+="\u06F8";break;case"9":b+="\u06F9";break;default:b+=a[c]}return b},convertPeToEn=function convertPeToEn(a){if(null==a||a==null)return"";for(var b="",c=0;c<a.length;c++)switch(a[c]){case"\u06F0":b+="0";break;case"\u06F1":b+="1";break;case"\u06F2":b+="2";break;case"\u06F3":b+="3";break;case"\u06F4":b+="4";break;case"\u06F5":b+="5";break;case"\u06F6":b+="6";break;case"\u06F7":b+="7";break;case"\u06F8":b+="8";break;case"\u06F9":b+="9";break;default:b+=a[c]}return b};//Convert Number To Words
//split number 3 by 3 with a separator (123456789.3025=>123,456,789.3,025) Do Not Give It Persian Numbers
//Puts a separator between the chunks of the given numString.
//Processing on Digits of A Number
//Main Process That Turn a Number Into a String(122=>100+20+2)
//getting The Type Of Each Number (Billion, Million,...)
//Calculate if number:String is Negative Or Not
//Calculate if number:String has '%' as Percent
//is number:String:Number is a Valid Number? if type is Number turn it to String And Return it
//Calculate if number:String has Decimal Point Or Not
//Convert English Numbers To Persian Numbers
//Convert Persian Numbers To English Numbers
module.exports=exports={convert:convert,sliceNumber:sliceNumber,convertEnToPe:convertEnToPe,convertPeToEn:convertPeToEn};
//# sourceMappingURL=persianNumber.min.js.map