UNPKG

ng-number-to-text

Version:

Set of pipes for angular2+ projects to convert numbers to words as ordinal numbers

301 lines (300 loc) 20.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Pipe } from '@angular/core'; var NumberToTextPipe = /** @class */ (function () { function NumberToTextPipe() { } /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.transform = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var number; if (typeof 'value' === 'string') { number = parseInt(value, 10); } else { number = value; } /** @type {?} */ var text = this.checkNumber(number); return 'The ' + text; }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkNumber = /** * @param {?} value * @return {?} */ function (value) { if (this.checkZero(value)) { return 'zeroth'; } else { if (value > 0 && value <= 10) return this.checkSingle(value); else if (value > 10 && value <= 20) return this.checkTenth(value); else if (value > 20 && value <= 30) return this.checkTwentieth(value); else if (value > 30 && value <= 40) return this.checkThirtieth(value); else if (value > 40 && value <= 50) return this.checkFortieth(value); else if (value > 50 && value <= 60) return this.checkFiftieth(value); else if (value > 60 && value <= 70) return this.checkSixtieth(value); else if (value > 70 && value <= 80) return this.checkSeventieth(value); else if (value > 80 && value <= 90) return this.checkEightieth(value); else if (value > 90 && value <= 100) return this.checkNinetieth(value); } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkZero = /** * @param {?} value * @return {?} */ function (value) { return value === 0; }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkSingle = /** * @param {?} value * @return {?} */ function (value) { if (value < 10 && value > 0) { if (value === 1) return 'first'; else if (value === 2) return 'second'; else if (value === 3) return 'third'; else if (value === 4) return 'fourth'; else if (value === 5) return 'fifth'; else if (value === 6) return 'sixth'; else if (value === 7) return 'seventh'; else if (value === 8) return 'eighth'; else return 'ninth'; } else { return 'tenth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkTenth = /** * @param {?} value * @return {?} */ function (value) { if (value > 10 && value < 20) { if (value === 11) return 'eleventh'; else if (value === 12) return 'twelfth'; else if (value === 13) return 'thirteenth'; else if (value === 14) return 'fourteenth'; else if (value === 15) return 'fifteenth'; else if (value === 16) return 'sixteenth'; else if (value === 17) return 'seventeenth'; else if (value === 18) return 'eighteenth'; else if (value === 19) return 'nineteenth'; } else { return 'twentieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkTwentieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'twenty-'; if (value > 20 && value < 30) { value -= 20; return prefix + this.checkSingle(value); } else { return 'thirtieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkThirtieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'thirty-'; if (value > 30 && value < 40) { value -= 30; return prefix + this.checkSingle(value); } else { return 'fortieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkFortieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'forty-'; if (value > 40 && value < 50) { value -= 40; return prefix + this.checkSingle(value); } else { return 'fiftieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkFiftieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'fifty-'; if (value > 50 && value < 60) { value -= 50; return prefix + this.checkSingle(value); } else { return 'sixtieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkSixtieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'sixty-'; if (value > 60 && value < 70) { value -= 60; return prefix + this.checkSingle(value); } else { return 'seventieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkSeventieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'seventy-'; if (value > 70 && value < 80) { value -= 70; return prefix + this.checkSingle(value); } else { return 'eightieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkEightieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'eighty-'; if (value > 80 && value < 90) { value -= 80; return prefix + this.checkSingle(value); } else { return 'ninetieth'; } }; /** * @param {?} value * @return {?} */ NumberToTextPipe.prototype.checkNinetieth = /** * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var prefix = 'ninety-'; if (value > 90 && value < 100) { value -= 90; return prefix + this.checkSingle(value); } else { return 'hundredth'; } }; NumberToTextPipe.decorators = [ { type: Pipe, args: [{ name: 'numberToText' },] } ]; return NumberToTextPipe; }()); export { NumberToTextPipe }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXRvLXRleHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLW51bWJlci10by10ZXh0LyIsInNvdXJjZXMiOlsibGliL3BpcGVzL251bWJlci10by10ZXh0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztJQUloRCxvQ0FBUzs7OztJQUFULFVBQVUsS0FBVTs7UUFDbEIsSUFBSSxNQUFNLENBQVM7UUFFbkIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNMLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDaEI7O1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDdEI7Ozs7O0lBRU8sc0NBQVc7Ozs7Y0FBQyxLQUFhO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzVCLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMzQixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtB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O1NBQ3BCOzs7Z0JBOUtKLElBQUksU0FBQyxFQUFDLElBQUksRUFBRSxjQUFjLEVBQUM7OzJCQUY1Qjs7U0FHYSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe25hbWU6ICdudW1iZXJUb1RleHQnfSlcclxuZXhwb3J0IGNsYXNzIE51bWJlclRvVGV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgaWYgKHR5cGVvZiAndmFsdWUnID09PSAnc3RyaW5nJykge1xyXG4gICAgICBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbnVtYmVyID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGxldCB0ZXh0ID0gdGhpcy5jaGVja051bWJlcihudW1iZXIpO1xyXG5cclxuICAgIHJldHVybiAnVGhlICcgKyB0ZXh0O1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGNoZWNrTnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY2hlY2taZXJvKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gJ3plcm90aCc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodmFsdWUgPiAwICYmIHZhbHVlIDw9IDEwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiAxMCAmJiB2YWx1ZSA8PSAyMClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1RlbnRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiAyMCAmJiB2YWx1ZSA8PSAzMClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1R3ZW50aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gMzAgJiYgdmFsdWUgPD0gNDApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUaGlydGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDQwICYmIHZhbHVlIDw9IDUwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRm9ydGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDUwICYmIHZhbHVlIDw9IDYwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRmlmdGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDYwICYmIHZhbHVlIDw9IDcwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2l4dGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDcwICYmIHZhbHVlIDw9IDgwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2V2ZW50aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gODAgJiYgdmFsdWUgPD0gOTApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tFaWdodGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDkwICYmIHZhbHVlIDw9IDEwMClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja05pbmV0aWV0aCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrWmVybyh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgPT09IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2luZ2xlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlIDwgMTAgJiYgdmFsdWUgPiAwKSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gJ2ZpcnN0JztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDIpXHJcbiAgICAgICAgcmV0dXJuICdzZWNvbmQnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMylcclxuICAgICAgICByZXR1cm4gJ3RoaXJkJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDQpXHJcbiAgICAgICAgcmV0dXJuICdmb3VydGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNSlcclxuICAgICAgICByZXR1cm4gJ2ZpZnRoJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDYpXHJcbiAgICAgICAgcmV0dXJuICdzaXh0aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA3KVxyXG4gICAgICAgIHJldHVybiAnc2V2ZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA4KVxyXG4gICAgICAgIHJldHVybiAnZWlnaHRoJztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiAnbmludGgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICd0ZW50aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrVGVudGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPiAxMCAmJiB2YWx1ZSA8IDIwKSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMTEpXHJcbiAgICAgICAgcmV0dXJuICdlbGV2ZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxMilcclxuICAgICAgICByZXR1cm4gJ3R3ZWxmdGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTMpXHJcbiAgICAgICAgcmV0dXJuICd0aGlydGVlbnRoJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDE0KVxyXG4gICAgICAgIHJldHVybiAnZm91cnRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxNSlcclxuICAgICAgICByZXR1cm4gJ2ZpZnRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxNilcclxuICAgICAgICByZXR1cm4gJ3NpeHRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxNylcclxuICAgICAgICByZXR1cm4gJ3NldmVudGVlbnRoJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDE4KVxyXG4gICAgICAgIHJldHVybiAnZWlnaHRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxOSlcclxuICAgICAgICByZXR1cm4gJ25pbmV0ZWVudGgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICd0d2VudGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1R3ZW50aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAndHdlbnR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiAyMCAmJiB2YWx1ZSA8IDMwKSB7XHJcbiAgICAgIHZhbHVlIC09IDIwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3RoaXJ0aWV0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrVGhpcnRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICd0aGlydHktJztcclxuICAgIGlmICh2YWx1ZSA+IDMwICYmIHZhbHVlIDwgNDApIHtcclxuICAgICAgdmFsdWUgLT0gMzA7XHJcbiAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnZm9ydGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZvcnRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICdmb3J0eS0nO1xyXG4gICAgaWYgKHZhbHVlID4gNDAgJiYgdmFsdWUgPCA1MCkge1xyXG4gICAgICB2YWx1ZSAtPSA0MDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdmaWZ0aWV0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRmlmdGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJ2ZpZnR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiA1MCAmJiB2YWx1ZSA8IDYwKSB7XHJcbiAgICAgIHZhbHVlIC09IDUwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3NpeHRpZXRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTaXh0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnc2l4dHktJztcclxuICAgIGlmICh2YWx1ZSA+IDYwICYmIHZhbHVlIDwgNzApIHtcclxuICAgICAgdmFsdWUgLT0gNjA7XHJcbiAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnc2V2ZW50aWV0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2V2ZW50aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnc2V2ZW50eS0nO1xyXG4gICAgaWYgKHZhbHVlID4gNzAgJiYgdmFsdWUgPCA4MCkge1xyXG4gICAgICB2YWx1ZSAtPSA3MDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdlaWdodGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0VpZ2h0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnZWlnaHR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiA4MCAmJiB2YWx1ZSA8IDkwKSB7XHJcbiAgICAgIHZhbHVlIC09IDgwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ25pbmV0aWV0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrTmluZXRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICduaW5ldHktJztcclxuICAgIGlmICh2YWx1ZSA+IDkwICYmIHZhbHVlIDwgMTAwKSB7XHJcbiAgICAgIHZhbHVlIC09IDkwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2h1bmRyZWR0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==