Skip to content

Instantly share code, notes, and snippets.

@amr3k
Created October 15, 2022 10:33
Show Gist options
  • Save amr3k/d3998052c368e7696f2cae246c608e57 to your computer and use it in GitHub Desktop.
Save amr3k/d3998052c368e7696f2cae246c608e57 to your computer and use it in GitHub Desktop.

Revisions

  1. amr3k created this gist Oct 15, 2022.
    13 changes: 13 additions & 0 deletions script.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    export function stringifyNumber(num: number, gender: 'male' | 'female' = 'male') {
    const special = {
    male: ['', 'الأول', 'الثاني', 'الثالث', 'الرابع', 'الخامس', 'السادس', 'السابع', 'الثامن', 'التاسع', 'العاشر', 'الحادي عشر', 'الثاني عشر', 'الثالث عشر', 'الرابع عشر', 'الخامس عشر', 'السادس عشر', 'السابع عشر', 'الثامن عشر', 'التاسع عشر'],
    female: ['', 'الأولى', 'الثانية', 'الثالثة', 'الرابعة', 'الخامسة', 'السادسة', 'السابعة', 'الثامنة', 'التاسعة', 'العاشرة', 'الحادية عشر', 'الثانية عشر', 'الثالثة عشر', 'الرابعة عشر', 'الخامسة عشر', 'السادسة عشر', 'السابعة عشر', 'الثامنة عشر', 'التاسعة عشر']
    };
    const deca = ['عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'];
    if (num < 20) return special[gender][num];
    if (num % 10 === 0) return 'ال' + deca[Math.floor(num / 10) - 2];
    return special[gender][num % 10] + ' و' + 'ال' + deca[Math.floor(num / 10) - 2];
    }

    console.log(stringifyNumber(39)); // "التاسع والثلاثون"
    console.log(stringifyNumber(12, 'female')); // "الثانية عشر"