UNPKG

ngx-thaibahtpipe

Version:

Angular pipe that transforms number into Thai words

158 lines 13.2 kB
/** * @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=