-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtunamal.js
41 lines (31 loc) · 3.26 KB
/
tunamal.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// ==========================================================================================
// Title: TUNAMAL
// Description: Converts until 9007199254740991 or 10^15 numbers to Mongolion words😉
// Author: Batzorig Gonchigsumlaa
// Email: [email protected]
// Date: 03 Mar 2023
//===========================================================================================
const nm2mn = (tunamal) => {
const ones = ["", "нэг", "хоёр", "гурав", "дөрөв", "тав", "зургаа", "долоо", "найм", "ес"];
const onesAlt = ["", "нэг", "хоёр", "гурван", "дөрвөн", "таван", "зургаан", "долоон", "найман", "есөн"];
const onesAltH = ["", "нэгэн", "хоёр", "гурван", "дөрвөн", "таван", "зургаан", "долоон", "найман", "есөн"];
const tens = ["", "арав", "хорь", "гуч", "дөч", "тавь", "жар", "дал", "ная", "ер"];
const tenth = ["", "арван", "хорин", "гучин", "дөчин", "тавин", "жаран", "далан", "наян", "ерэн"];
if(tunamal === 0) return 'тэг' ;
if(tunamal > Number.MAX_SAFE_INTEGER) return '⚠️ АНХААР: Тунамалын оронгоос хэтэрлээ 🤦♂️';
let num = ('0000000000000000'+ tunamal).slice(-16).match(/^(\d{1})(\d{1})(\d{2})(\d{1})(\d{2})(\d{1})(\d{2})(\d{1})(\d{2})(\d{1})(\d{2})$/); // тунамал
if(!num) return;
let result = num[1] != 0 ? (onesAlt[Number(num[1])] || `${tenth[num[1][0]]} ${onesAlt[num[1][1]]}`) + ' тунамал ' : '';
result += num[2] != 0 ? (onesAlt[Number(num[2])] || `${tenth[num[2][0]]} ${ones[num[2][1]]}`) + ' зуун ' : '';
result += num[3] != 0 ? (onesAlt[Number(num[3])] || `${tenth[num[3][0]]} ${num[3][0]!=='0' ? onesAltH[num[3][1]] : onesAlt[num[3][1]]}`) + ' их наяд ' : (num[2] !== '0' ? ' их наяд ' : '');
result += num[4] != 0 ? (onesAlt[Number(num[4])] || `${tenth[num[4][0]]} ${ones[num[4][1]]}`) + ' зуун ' : '';
result += num[5] != 0 ? (onesAlt[Number(num[5])] || `${tenth[num[5][0]]} ${num[5][0]!=='0' ? onesAltH[num[5][1]] : onesAlt[num[5][1]]}`) + ' тэрбум ' : (num[4] !== '0' ? ' тэрбум ' : '');
result += num[6] != 0 ? (onesAlt[Number(num[6])] || `${tenth[num[6][0]]} ${ones[num[6][1]]}`) + ' зуун ' : '';
result += num[7] != 0 ? (onesAlt[Number(num[7])] || `${tenth[num[7][0]]} ${num[7][0]!=='0' ? onesAltH[num[7][1]] : onesAlt[num[7][1]]}`) + ' сая ' : (num[6] !== '0' ? ' сая ' : '');
result += num[8] != 0 ? (onesAlt[Number(num[8])] || `${tenth[num[8][0]]} ${ones[num[8][1]]}`) + ' зуун ' : '';
result += num[9] != 0 ? (onesAlt[Number(num[9])] || `${tenth[num[9][0]]} ${num[9][0]!=='0' ? onesAltH[num[9][1]] : onesAlt[num[9][1]]}`) + ' мянга ' : (num[8] !== '0' ? ' мянга ' : '');
result += num[10] != 0 ? (onesAlt[Number(num[10])] || `${tenth[num[10][0]]} ${ones[num[10][1]]}`) + (num[11] === '00' ? ' зуу ' : ' зуун ') : '';
result += num[11] != 0 ? (ones[Number(num[11])] || `${(num[11][1]==="0")?tens[num[11][0]]:tenth[num[11][0]]} ${ones[num[11][1]]} `) : '';
return result.replace(/\s+/g, ' ').trim();
};
export default nm2mn;