diff --git a/src/lib/helpers/utfNumbers.ts b/src/lib/helpers/utfNumbers.ts new file mode 100644 index 0000000..4b46eb2 --- /dev/null +++ b/src/lib/helpers/utfNumbers.ts @@ -0,0 +1,70 @@ +// Latin Digits (English) +const latinDigits = [ + '\u0030', // 0 + '\u0031', // 1 + '\u0032', // 2 + '\u0033', // 3 + '\u0034', // 4 + '\u0035', // 5 + '\u0036', // 6 + '\u0037', // 7 + '\u0038', // 8 + '\u0039' // 9 +]; + +// Arabic Digits +const arabicDigits = [ + '\u0660', // ٠ + '\u0661', // ١ + '\u0662', // ٢ + '\u0663', // ٣ + '\u0664', // ٤ + '\u0665', // ٥ + '\u0666', // ٦ + '\u0667', // ٧ + '\u0668', // ٨ + '\u0669' // ٩ +]; + +// Persian Digits +const persianDigits = [ + '\u06F0', // ۰ + '\u06F1', // ۱ + '\u06F2', // ۲ + '\u06F3', // ۳ + '\u06F4', // ۴ + '\u06F5', // ۵ + '\u06F6', // ۶ + '\u06F7', // ۷ + '\u06F8', // ۸ + '\u06F9' // ۹ +]; + +/** + * + * @param n latin/arabic numbers + * @returns persian numbers + */ +function ef(n: string | number) { + return n.toString().split("").map(c => persianDigits[latinDigits.indexOf(c)] || persianDigits[arabicDigits.indexOf(c)] || c).join(""); +}; + +/** + * + * @param n latin/persian numbers + * @returns arabic numbers + */ +function ea(n: string | number) { + return n.toString().split("").map(c => arabicDigits[latinDigits.indexOf(c)] || arabicDigits[persianDigits.indexOf(c)] || c).join(""); +}; + +/** + * + * @param n persian/arabic numbers + * @returns latin numbers + */ +function ue(n: string | number) { + return n.toString().split("").map(c => latinDigits[persianDigits.indexOf(c)] || latinDigits[arabicDigits.indexOf(c)] || c).join(""); +}; + +export { ef, ea, ue }; \ No newline at end of file