ngx-thaibahtpipe
Version:
Angular pipe that transforms number into Thai words
139 lines • 12.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Pipe } from '@angular/core';
export class ThaiBahtPipe {
constructor() {
this.thaiNum = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า'];
this.thaiUnit = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];
}
/**
* @param {?} value
* @param {?=} args
* @return {?}
*/
transform(value, args) {
if (isNaN(value) || value === null) {
return value;
}
/** @type {?} */
const splitArray = parseFloat(value).toFixed(2).toString().split('.');
/** @type {?} */
const bahtArray = splitArray[0].replace('-', '')
.split('')
.reverse()
.map((/**
* @param {?} val
* @return {?}
*/
(val) => parseInt(val, 10)));
/** @type {?} */
const resultBahtArray = [];
resultBahtArray.push('บาท');
/** @type {?} */
const resultBaht = this.transformArray(bahtArray);
resultBahtArray.push(resultBaht.reverse().join(''));
if (splitArray[1] === undefined || splitArray[1] === '00') {
return resultBahtArray.reverse().join('') + 'ถ้วน';
}
/** @type {?} */
const satangArray = splitArray[1].replace('-', '')
.split('')
.reverse()
.map((/**
* @param {?} val
* @return {?}
*/
(val) => parseInt(val, 10)));
/** @type {?} */
const resultSatangArray = [];
resultSatangArray.push('สตางค์');
/** @type {?} */
const resultSatang = this.transformArray(satangArray).join('');
resultSatangArray.push(resultSatang);
return resultBahtArray.reverse().join('') + resultSatangArray.reverse().join('');
}
/**
* @private
* @param {?} array
* @return {?}
*/
transformArray(array) {
return this.chunkArray(array, 6).map((/**
* @param {?} chunk
* @param {?} chunkIndex
* @return {?}
*/
(chunk, chunkIndex) => {
/** @type {?} */
const chunkResult = [];
if (chunkIndex > 0) {
chunkResult.push('ล้าน');
}
chunk.forEach((/**
* @param {?} num
* @param {?} index
* @return {?}
*/
(num, index) => {
if (num === 0 && chunk[index + 1] !== undefined) {
return;
}
if (num === 1 && index === 0 && chunk.length === 2 && chunk[1] === 0) {
chunkResult.push('หนึ่ง');
return;
}
if (num === 1 && index === 0 && chunk.length > 1) {
chunkResult.push('เอ็ด');
return;
}
if (num === 1 && index === 1) {
chunkResult.push(this.thaiUnit[index]);
return;
}
if (num === 2 && index === 1) {
chunkResult.push('ยี่' + this.thaiUnit[index]);
return;
}
if (num === 0 && index !== 0) {
return;
}
chunkResult.push(this.thaiNum[num] + this.thaiUnit[index]);
}));
return chunkResult.reverse().join('');
}));
}
/**
* @private
* @param {?} array
* @param {?} size
* @return {?}
*/
chunkArray(array, size) {
/** @type {?} */
const results = [];
while (array.length) {
results.push(array.splice(0, size));
}
return results;
}
}
ThaiBahtPipe.decorators = [
{ type: Pipe, args: [{
name: 'thaibaht'
},] }
];
if (false) {
/**
* @type {?}
* @private
*/
ThaiBahtPipe.prototype.thaiNum;
/**
* @type {?}
* @private
*/
ThaiBahtPipe.prototype.thaiUnit;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhhaWJhaHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10aGFpYmFodHBpcGUvIiwic291cmNlcyI6WyJsaWIvdGhhaWJhaHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFIekI7UUFJVSxZQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RixhQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQXdGeEUsQ0FBQzs7Ozs7O0lBdEZDLFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBVTtRQUM5QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTs7Y0FFL0MsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzs7Y0FDL0QsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUM3QyxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsT0FBTyxFQUFFO2FBQ1QsR0FBRzs7OztRQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFDOztjQUVwQyxlQUFlLEdBQUcsRUFBRTtRQUUxQixlQUFlLENBQUMsSUFBSSxDQUFDLEtB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LElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtvQkFDNUIsT0FBTztpQkFDUjtnQkFFRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUMsRUFBQyxDQUFDO1lBRUgsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7OztJQUVPLFVBQVUsQ0FBQyxLQUFZLEVBQUUsSUFBWTs7Y0FDckMsT0FBTyxHQUFHLEVBQUU7UUFFbEIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OztZQTVGRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7YUFDakI7Ozs7Ozs7SUFFQywrQkFBOEY7Ozs7O0lBQzlGLGdDQUFzRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAndGhhaWJhaHQnXG59KVxuZXhwb3J0IGNsYXNzIFRoYWlCYWh0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIHRoYWlOdW0gPSBbJ+C4qOC4ueC4meC4ouC5jCcsICfguKvguJnguLbguYjguIcnLCAn4Liq4Lit4LiHJywgJ+C4quC4suC4oScsICfguKrguLXguYgnLCAn4Lir4LmJ4LiyJywgJ+C4q+C4gScsICfguYDguIjguYfguJQnLCAn4LmB4Lib4LiUJywgJ+C5gOC4geC5ieC4siddO1xuICBwcml2YXRlIHRoYWlVbml0ID0gWycnLCAn4Liq4Li04LiaJywgJ+C4o+C5ieC4reC4oicsICfguJ7guLHguJknLCAn4Lir4Lih4Li34LmI4LiZJywgJ+C5geC4quC4mScsICfguKXguYnguLLguJknXTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgYXJncz86IGFueSk6IGFueSB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkgeyByZXR1cm4gdmFsdWU7IH1cblxuICAgIGNvbnN0IHNwbGl0QXJyYXkgPSBwYXJzZUZsb2F0KHZhbHVlKS50b0ZpeGVkKDIpLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBiYWh0QXJyYXkgPSBzcGxpdEFycmF5WzBdLnJlcGxhY2UoJy0nLCAnJylcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5tYXAoKHZhbDogc3RyaW5nKSA9PiBwYXJzZUludCh2YWwsIDEwKSk7XG5cbiAgICBjb25zdCByZXN1bHRCYWh0QXJyYXkgPSBbXTtcblxuICAgIHJlc3VsdEJhaHRBcnJheS5wdXNoKCfguJrguLLguJcnKTtcbiAgICBjb25zdCByZXN1bHRCYWh0ID0gdGhpcy50cmFuc2Zvcm1BcnJheShiYWh0QXJyYXkpO1xuICAgIHJlc3VsdEJhaHRBcnJheS5wdXNoKHJlc3VsdEJhaHQucmV2ZXJzZSgpLmpvaW4oJycpKTtcblxuICAgIGlmIChzcGxpdEFycmF5WzFdID09PSB1bmRlZmluZWQgfHwgc3BsaXRBcnJheVsxXSA9PT0gJzAwJykge1xuICAgICAgcmV0dXJuIHJlc3VsdEJhaHRBcnJheS5yZXZlcnNlKCkuam9pbignJykgKyAn4LiW4LmJ4Lin4LiZJztcbiAgICB9XG5cbiAgICBjb25zdCBzYXRhbmdBcnJheSA9IHNwbGl0QXJyYXlbMV0ucmVwbGFjZSgnLScsICcnKVxuICAgICAgLnNwbGl0KCcnKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLm1hcCgodmFsOiBzdHJpbmcpID0+IHBhcnNlSW50KHZhbCwgMTApKTtcblxuICAgIGNvbnN0IHJlc3VsdFNhdGFuZ0FycmF5ID0gW107XG5cbiAgICByZXN1bHRTYXRhbmdBcnJheS5wdXNoKCfguKrguJXguLLguIfguITguYwnKTtcbiAgICBjb25zdCByZXN1bHRTYXRhbmcgPSB0aGlzLnRyYW5zZm9ybUFycmF5KHNhdGFuZ0FycmF5KS5qb2luKCcnKTtcbiAgICByZXN1bHRTYXRhbmdBcnJheS5wdXNoKHJlc3VsdFNhdGFuZyk7XG5cbiAgICByZXR1cm4gcmVzdWx0QmFodEFycmF5LnJldmVyc2UoKS5qb2luKCcnKSArIHJlc3VsdFNhdGFuZ0FycmF5LnJldmVyc2UoKS5qb2luKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQXJyYXkoYXJyYXk6IGFueVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuY2h1bmtBcnJheShhcnJheSwgNikubWFwKChjaHVuaywgY2h1bmtJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY2h1bmtSZXN1bHQgPSBbXTtcblxuICAgICAgaWYgKGNodW5rSW5kZXggPiAwKSB7XG4gICAgICAgIGNodW5rUmVzdWx0LnB1c2goJ+C4peC5ieC4suC4mScpO1xuICAgICAgfVxuXG4gICAgICBjaHVuay5mb3JFYWNoKChudW06IG51bWJlciwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAobnVtID09PSAwICYmIGNodW5rW2luZGV4ICsgMV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChudW0gPT09IDEgJiYgaW5kZXggPT09IDAgJiYgY2h1bmsubGVuZ3RoID09PSAyICYmIGNodW5rWzFdID09PSAwKSB7XG4gICAgICAgICAgY2h1bmtSZXN1bHQucHVzaCgn4Lir4LiZ4Li24LmI4LiHJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG51bSA9PT0gMSAmJiBpbmRleCA9PT0gMCAmJiBjaHVuay5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY2h1bmtSZXN1bHQucHVzaCgn4LmA4Lit4LmH4LiUJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG51bSA9PT0gMSAmJiBpbmRleCA9PT0gMSkge1xuICAgICAgICAgIGNodW5rUmVzdWx0LnB1c2godGhpcy50aGFpVW5pdFtpbmRleF0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChudW0gPT09IDIgJiYgaW5kZXggPT09IDEpIHtcbiAgICAgICAgICBjaHVua1Jlc3VsdC5wdXNoKCfguKLguLXguYgnICsgdGhpcy50aGFpVW5pdFtpbmRleF0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChudW0gPT09IDAgJiYgaW5kZXggIT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjaHVua1Jlc3VsdC5wdXNoKHRoaXMudGhhaU51bVtudW1dICsgdGhpcy50aGFpVW5pdFtpbmRleF0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjaHVua1Jlc3VsdC5yZXZlcnNlKCkuam9pbignJyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNodW5rQXJyYXkoYXJyYXk6IGFueVtdLCBzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgICB3aGlsZSAoYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXJyYXkuc3BsaWNlKDAsIHNpemUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxufVxuIl19