UNPKG

ngx-thaibahtpipe

Version:

Angular pipe that transforms number into Thai words

139 lines 12.6 kB
/** * @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