export default defineNuxtPlugin(() => { console.info("persina number plugin"); }); // const oneDigit = [ // "صفر", // "یک", // "دو", // "سه", // "چهار", // "پنج", // "شش", // "هفت", // "هشت", // "نه", // ]; // const twoDigits = { // 10: "ده", // 11: "یازده", // 12: "دوازده", // 13: "سیزده", // 14: "چهارده", // 15: "پانزده", // 16: "شانزده", // 17: "هفده", // 18: "هجده", // 19: "نوزده", // 20: "بیست", // 30: "سی", // 40: "چهل", // 50: "پنجاه", // 60: "شصت", // 70: "هفتاد", // 80: "هشتاد", // 90: "نود", // }; // const threeDigits = { // 100: "صد", // 200: "دویست", // 300: "سیصد", // 400: "چهارصد", // 500: "پانصد", // 600: "شش صد", // 700: "هفت صد", // 800: "هشت صد", // 900: "نه صد", // }; // const types = ["تلیارد", "میلیارد", "میلیون", "هزار", ""]; // const decimalTypes = ["دهم", "صدم", "هزارم", "ده هزارم"]; // let numbers = []; // let decimals = []; // //Convert Number To Words // const convert = (number) => { // let negative = ""; // let decNumber = ""; // let decimal = ""; // let percent = ""; // if (isPercent(number)) { // number = number.replace("%", ""); // percent = " درصد"; // } // number = getString(number); // if (number == "") return ""; // sliceNumber(number); // if (isNegative(number)) negative = "منفی "; // number = number.replace("-", ""); // if (isDecimal(number)) { // let index = number.indexOf("."); // let decNumberStr = ""; // decNumber = number.substr(index + 1, number.length); // number = number.substr(0, index); // decNumberStr = parseInt(decNumber).toString(); // if (decNumberStr.length === 1 && decNumberStr != "0") { // decimal += oneDigit[decNumberStr] + " "; // decimal += decimalTypes[decNumber.length - 1]; // } else { // decimal = calculateDigits(decimals); // decimal += " " + decimalTypes[decNumber.length - 1]; // } // } // if (number.length === 1) { // if (!decimal) { // return negative + oneDigit[number] + percent; // } // if (number == "0") { // return negative + decimal + percent; // } // return negative + oneDigit[number] + " ممیز " + decimal + percent; // } // if (!decimal) { // return negative + calculateDigits(numbers) + percent; // } // return negative + calculateDigits(numbers) + " ممیز " + decimal + percent; // }; // //split number 3 by 3 with a separator (123456789.3025=>123,456,789.3,025) Do Not Give It Persian Numbers // const sliceNumber = (number, separator = ",") => { // let percent = ""; // let neg = ""; // let dNum = ""; // let n = ""; // let d = ""; // if (isPercent(number)) { // number = number.replace("%", ""); // percent = "%"; // } // number = getString(number); // if (number == "") return ""; // if (isNegative(number)) neg = "-"; // number = number.replace("-", ""); // if (isDecimal(number)) { // let index = number.indexOf("."); // dNum = number.substr(index + 1, number.length); // number = number.substr(0, index); // } // n = putSeparator(number, separator); // numbers = n.split(separator); // if (!dNum) return neg + n + percent; // d = putSeparator(dNum, separator); // decimals = d.split(separator); // return neg + n + "." + d + percent; // }; // //Puts a separator between the chunks of the given numString. // const putSeparator = (numString, separator = ",") => { // if (typeof numString !== "string") return ""; // if (numString.length < 4) return numString; // let result = ""; // for (let i = numString.length - 1, counter = 0; i >= 0; i--) { // if (counter == 3) { // result += separator; // counter = 0; // } // result += numString[i]; // counter++; // } // result = result.split("").reverse().join(""); // return result; // }; // //Processing on Digits of A Number // const calculateDigits = (arrNum) => { // let result = ""; // for (let i = 0; i < arrNum.length; i++) { // let parsedNum = parseInt(arrNum[i]); // let number = parsedNum; // let sadgan = Math.floor(number / 100) * 100; // number = number % 100; // let dahgan = Math.floor(number / 10) * 10; // let yekan = number % 10; // result += i !== 0 && parsedNum ? " و " : ""; // result += // getPersian(sadgan, dahgan, yekan, i, arrNum) + " " + getType(i, arrNum); // } // return result.trim(); // }; // //Main Process That Turn a Number Into a String(122=>100+20+2) // const getPersian = (sadgan, dahgan, yekan, index, numbers) => { // let flag = false; // let result = ""; // let dahganPlusYekan = dahgan + yekan; // if (threeDigits[sadgan]) { // result += // yekan > 0 || dahgan > 0 // ? threeDigits[sadgan] + " و " // : threeDigits[sadgan]; // } // if (twoDigits[dahganPlusYekan]) { // result += twoDigits[dahganPlusYekan] + " "; // return result; // } // if (twoDigits[dahgan]) { // result += twoDigits[dahgan] + " و "; // } // if ( // numbers.length === 2 && // index === 0 && // yekan === 1 && // dahgan === 0 && // sadgan === 0 // ) { // return result; // } // if ( // numbers.length > 2 && // index === numbers.length - 2 && // yekan === 1 && // dahgan === 0 && // sadgan === 0 // ) { // return result; // } // if (yekan > 0) result += oneDigit[yekan] + " "; // return result; // }; // //getting The Type Of Each Number (Billion, Million,...) // const getType = (i, numbers) => { // let parsedNum = parseInt(numbers[i]); // if (isNaN(parsedNum)) return ""; // if (!parsedNum) return ""; // let length = numbers.length - i; // let index = types.length - length; // return types[index]; // }; // //Calculate if number:String is Negative Or Not // const isNegative = (number) => { // number = getString(number); // if (!number) return false; // if (number[0] != "-") return false; // number = number.replace("-", ""); // return number != "0"; // }; // //Calculate if number:String has '%' as Percent // const isPercent = (string) => { // if (typeof string !== "string") return false; // let index = string.indexOf("%"); // let lIndex = string.lastIndexOf("%"); // if (index != lIndex) return false; // return index > 0; // }; // //is number:String:Number is a Valid Number? if type is Number turn it to String And Return it // const getString = (number) => { // if (number === undefined) return ""; // if (number === null) return ""; // if (isNaN(number)) return ""; // if (typeof number === "number") return number.toString(); // return number.trim(); // }; // //Calculate if number:String has Decimal Point Or Not // const isDecimal = (number) => { // number = getString(number); // if (number == "") return false; // let index = number.indexOf("."); // let lIndex = number.lastIndexOf("."); // if (index != lIndex) return false; // return index > 0; // }; // //Convert English Numbers To Persian Numbers // const convertEnToPe = (number) => { // if (number == null || number == undefined) return ""; // if (typeof number == "number") number = number.toString(); // let res = ""; // for (let i = 0; i < number.length; i++) { // switch (number[i]) { // case "\u0030": // res += "\u06F0"; // break; // case "\u0031": // res += "\u06F1"; // break; // case "\u0032": // res += "\u06F2"; // break; // case "\u0033": // res += "\u06F3"; // break; // case "\u0034": // res += "\u06F4"; // break; // case "\u0035": // res += "\u06F5"; // break; // case "\u0036": // res += "\u06F6"; // break; // case "\u0037": // res += "\u06F7"; // break; // case "\u0038": // res += "\u06F8"; // break; // case "\u0039": // res += "\u06F9"; // break; // default: // res += number[i]; // } // } // return res; // }; // //Convert Persian Numbers To English Numbers // const convertPeToEn = (number) => { // if (number == null || number == undefined) return ""; // let res = ""; // for (let i = 0; i < number.length; i++) { // switch (number[i]) { // case "\u06F0": // res += "\u0030"; // break; // case "\u06F1": // res += "\u0031"; // break; // case "\u06F2": // res += "\u0032"; // break; // case "\u06F3": // res += "\u0033"; // break; // case "\u06F4": // res += "\u0034"; // break; // case "\u06F5": // res += "\u0035"; // break; // case "\u06F6": // res += "\u0036"; // break; // case "\u06F7": // res += "\u0037"; // break; // case "\u06F8": // res += "\u0038"; // break; // case "\u06F9": // res += "\u0039"; // break; // default: // res += number[i]; // } // } // return res; // }; // const e2p = (s) => s.replace(/\d/g, (d) => "۰۱۲۳۴۵۶۷۸۹"[d]); // const e2a = (s) => s.replace(/\d/g, (d) => "٠١٢٣٤٥٦٧٨٩"[d]); // const p2e = (s) => s.replace(/[۰-۹]/g, (d) => "۰۱۲۳۴۵۶۷۸۹".indexOf(d)); // const a2e = (s) => s.replace(/[٠-٩]/g, (d) => "٠١٢٣٤٥٦٧٨٩".indexOf(d)); // const p2a = (s) => // s.replace(/[۰-۹]/g, (d) => "٠١٢٣٤٥٦٧٨٩"["۰۱۲۳۴۵۶۷۸۹".indexOf(d)]); // const a2p = (s) => // s.replace(/[٠-٩]/g, (d) => "۰۱۲۳۴۵۶۷۸۹"["٠١٢٣٤٥٦٧٨٩".indexOf(d)]); // export { // convert, // sliceNumber, // convertEnToPe, // convertPeToEn, // e2p, // e2a, // p2e, // a2e, // p2a, // a2p, // };