// 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 };