UNPKG

num2persian

Version:
1 lines 3.37 kB
"use strict";var delimiter=" و ",zero="صفر",negative="منفی ",letters=[["","یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه"],["ده","یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفده","هجده","نوزده","بیست"],["","","بیست","سی","چهل","پنجاه","شصت","هفتاد","هشتاد","نود"],["","یکصد","دویست","سیصد","چهارصد","پانصد","ششصد","هفتصد","هشتصد","نهصد"],[""," هزار"," میلیون"," میلیارد"," بیلیون"," بیلیارد"," تریلیون"," تریلیارد"," کوآدریلیون"," کادریلیارد"," کوینتیلیون"," کوانتینیارد"," سکستیلیون"," سکستیلیارد"," سپتیلیون"," سپتیلیارد"," اکتیلیون"," اکتیلیارد"," نانیلیون"," نانیلیارد"," دسیلیون"," دسیلیارد"]],decimalSuffixes=["","دهم","صدم","هزارم","ده‌هزارم","صد‌هزارم","میلیونوم","ده‌میلیونوم","صدمیلیونوم","میلیاردم","ده‌میلیاردم","صد‌‌میلیاردم"],prepareNumber=function(r){var e="number"==typeof r?r.toString():r;return e.length%3==1?e="00".concat(e):e.length%3==2&&(e="0".concat(e)),e.replace(/\d{3}(?=\d)/g,"$&*").split("*")},tinyNumToWord=function(r){var e=parseInt(r,10);if(0===e)return"";if(e<10)return letters[0][e];if(e<=20)return letters[1][e-10];if(e<100){var t=e%10,n=Math.floor((e-t)/10);return t>0?letters[2][n]+delimiter+letters[0][t]:letters[2][n]}var i=e%10,u=Math.floor((e-e%100)/100),o=Math.floor((e-(100*u+i))/10),a=[letters[3][u]],l=10*o+i;return 0===l||(l<10?a.push(letters[0][l]):l<=20?a.push(letters[1][l-10]):(a.push(letters[2][o]),i>0&&a.push(letters[0][i]))),a.join(delimiter)},convertDecimalPart=function(r){return""===(r=r.replace(/0*$/,""))?"":(r.length>11&&(r=r.substring(0,11))," ممیز "+num2persian(r)+" "+decimalSuffixes[r.length])},convert=function(r,e){var t=r.toString().replace(/[^0-9.-]/g,""),n=!1,i=parseFloat(t);if(isNaN(i))return zero;if(0===i)return zero;i<0?(n=!0,r=t.replace(/-/g,"")):r=t;var u="",o=r.toString(),a=o.indexOf(".");if(a>-1&&(o=r.toString().substring(0,a),u=r.toString().substring(a+1)),o.length>66)return"خارج از محدوده";for(var l=prepareNumber(o),s=[],f=0;f<l.length;f+=1){var g;""!==(g=e?en2fa(l[f]):tinyNumToWord(l[f]))&&s.push(g+letters[4][l.length-(f+1)])}0==s.length&&(s[0]=zero);var c="";return u.length>0&&(c=convertDecimalPart(u)),(n?negative:"")+s.join(delimiter)+c};function num2mixed(r){return convert(r,!0)}var num2persian=function(r){return convert(r,!1)};function en2fa(r){r=String(r);for(var e=["1","2","3","4","5","6","7","8","9","0",","],t=["۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","،"],n=0;n<11;n++)r=r.replace(new RegExp(e[n],"g"),t[n]);return r}function fa2en(r){for(var e=["1","2","3","4","5","6","7","8","9","0",","],t=["۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","،"],n=0;n<11;n++)r=r.replace(new RegExp(t[n],"g"),e[n]);return r}function moneyFormat(r){if((r=en2fa(String(r))).length<=3)return r;for(var e="",t=0,n=r.length-1;n>=0;n--)e=r[n]+(t>0&&t%3==0&&t!==r.length?"،":"")+e,t++;return e}String.prototype.num2persian=function(){return num2persian(this)},Number.prototype.num2persian=function(){return num2persian(this.toString())};