-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmyanmarNumToWord.js
125 lines (96 loc) · 4.86 KB
/
myanmarNumToWord.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
(function (global) {
'use strict';
function myanmarNumToWord() {
var _myanmarNumToWord = {};
var words = ['', 'တစ်', 'နှစ်', 'သုံး', 'လေး', 'ငါး', 'ခြောက်', 'ခုနှစ်', 'ရှစ်', 'ကိုး', 'တစ်ဆယ်'];
var wordsConcat = words.slice(1).join('|');
var numbers = {
"၀": 0,
"၁": 1,
"၂": 2,
"၃": 3,
"၄": 4,
"၅": 5,
"၆": 6,
"၇": 7,
"၈": 8,
"၉": 9
};
_myanmarNumToWord.convertToEnglishNumber = function (numberInput) {
// convert to num to string
numberInput = numberInput.toString();
// check for wa lone cases
numberInput = numberInput.replace(/([၁၂၃၄၅၆၇၈၉၀])ဝ/g, '$10');
numberInput = numberInput.replace(/ဝ([၁၂၃၄၅၆၇၈၉၀])/g, '0$1');
Object.keys(numbers).forEach(function (item) {
const re = new RegExp(item, "g");
numberInput = numberInput.replace(re, numbers[item]);
});
return numberInput;
};
_myanmarNumToWord.convertToBurmeseNumber = function (numberInput) {
// convert to num to string
numberInput = numberInput.toString();
Object.keys(numbers).forEach(function (item) {
const re = new RegExp(numbers[item], "g");
numberInput = numberInput.replace(re, item);
});
return numberInput;
};
// We will add functions to our library here !
// Just create a property to our library object.
_myanmarNumToWord.convertToBurmeseWords = function (num, wordType = 'written') {
if (!num) return num;
// convert to english number first
num = _myanmarNumToWord.convertToEnglishNumber(num);
if (isNaN(num)) {
throw new Error('Invalid number to convert.');
}
if ((num = num.toString()).length > 10) return 'overflow';
var n = ('000000000' + num).substr(-10).match(/^(\d{1})(\d{1})(\d{1})(\d{2})(\d{1})(\d{1})(\d{1})(\d{2})$/);
if (!n) return;
var upperLakh = '';
var lowerLakh = '';
upperLakh += (n[1] != 0) ? 'သိန်း' + words[n[1][0]] + 'သောင်း' : '';
upperLakh += (n[2] != 0) ? ((upperLakh != '') ? '' : 'သိန်း') + words[n[2][0]] + 'ထောင်' : '';
upperLakh += (n[3] != 0) ? ((upperLakh != '') ? '' : 'သိန်း') + words[n[3][0]] + 'ရာ' : '';
if ((n[4] != 0)) {
if (words[n[4][0]] && !words[n[4][1]]) {
upperLakh += ((upperLakh != '') ? '' : 'သိန်း') + words[n[4][0]] + 'ဆယ်';
} else if (words[n[4][0]] || words[n[4][1]]) {
upperLakh += (words[Number(n[4])] || words[n[4][0]] + 'ဆယ်' + words[n[4][1]]) + 'သိန်း';
}
}
lowerLakh += (n[5] != 0) ? (words[Number(n[5])]) + 'သောင်း' : '';
lowerLakh += (n[6] != 0) ? (words[Number(n[6])]) + 'ထောင်' : '';
lowerLakh += (n[7] != 0) ? (words[Number(n[7])]) + 'ရာ' : '';
lowerLakh += (n[8] != 0) ? (words[Number(n[8])] || words[n[8][0]] + 'ဆယ်' + words[n[8][1]]) : '';
var final = (upperLakh !== '' && lowerLakh !== '') ? upperLakh + ' နှင့် ' + lowerLakh : upperLakh + lowerLakh;
const re = new RegExp("(ဆယ်(?=" + wordsConcat + "))|(ရာ(?=" + wordsConcat + "))|(ထောင်(?=" + wordsConcat + "))|(သောင်း)", 'gi');
final = final.replace(re, function ($0) {
if ($0 == "ရာ")
return (wordType == 'speech') ? "ရာ့ " : "ရာ ";
else if ($0 == "ထောင်")
return (wordType == 'speech') ? "ထောင့် " : "ထောင် ";
else if ($0 == "ဆယ်")
return "ဆယ့်";
else
return $0 + ' ';
});
return final.trim();
}
return _myanmarNumToWord;
}
if (typeof define === 'function' && define.amd) {
define(function () {
return myanmarNumToWord();
});
} else if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = myanmarNumToWord();
}
exports.myanmarNumToWord = myanmarNumToWord();
} else if (typeof (global.myanmarNumToWord) === 'undefined') {
global.myanmarNumToWord = myanmarNumToWord();
}
})(this); // We send the global variable withing our function