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