/**
 * ابزارهای متن فارسی: یکسان‌سازی حروف و ارقام برای جستجو و ساخت اسلاگ.
 */

const FA_DIGITS = "۰۱۲۳۴۵۶۷۸۹";
const AR_DIGITS = "٠١٢٣٤٥٦٧٨٩";

/** ارقام فارسی و عربی را به لاتین تبدیل می‌کند (برای ورودی موبایل، کد پستی و…) */
export function toLatinDigits(input: string): string {
  return input
    .replace(/[۰-۹]/g, (d) => String(FA_DIGITS.indexOf(d)))
    .replace(/[٠-٩]/g, (d) => String(AR_DIGITS.indexOf(d)));
}

/**
 * یکسان‌سازی متن برای مقایسه و جستجو:
 * «ي/ك» عربی ← «ی/ک» فارسی، حذف اعراب، نیم‌فاصله ← فاصله، حروف کوچک.
 */
export function normalizeFa(input: string): string {
  return toLatinDigits(input)
    .replace(/ي/g, "ی")
    .replace(/ى/g, "ی")
    .replace(/ك/g, "ک")
    .replace(/[ۀة]/g, "ه")
    .replace(/[ً-ٰٟ]/g, "")
    .replace(/‌/g, " ")
    .replace(/\s+/g, " ")
    .trim()
    .toLowerCase();
}

/** اسلاگ فارسی خوانا: «سرم ویتامین C ۱۵٪» ← «سرم-ویتامین-c-15» */
export function slugifyFa(input: string): string {
  return normalizeFa(input)
    .replace(/[^\p{L}\p{N}]+/gu, "-")
    .replace(/^-+|-+$/g, "");
}
