UNPKG

ng-number-to-text

Version:

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

245 lines (244 loc) 19.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Pipe } from '@angular/core'; export class NumberToTextPipe { /** * @param {?} value * @return {?} */ transform(value) { /** @type {?} */ let number; if (typeof 'value' === 'string') { number = parseInt(value, 10); } else { number = value; } /** @type {?} */ let text = this.checkNumber(number); return 'The ' + text; } /** * @param {?} value * @return {?} */ checkNumber(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 {?} */ checkZero(value) { return value === 0; } /** * @param {?} value * @return {?} */ checkSingle(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 {?} */ checkTenth(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 {?} */ checkTwentieth(value) { /** @type {?} */ let prefix = 'twenty-'; if (value > 20 && value < 30) { value -= 20; return prefix + this.checkSingle(value); } else { return 'thirtieth'; } } /** * @param {?} value * @return {?} */ checkThirtieth(value) { /** @type {?} */ let prefix = 'thirty-'; if (value > 30 && value < 40) { value -= 30; return prefix + this.checkSingle(value); } else { return 'fortieth'; } } /** * @param {?} value * @return {?} */ checkFortieth(value) { /** @type {?} */ let prefix = 'forty-'; if (value > 40 && value < 50) { value -= 40; return prefix + this.checkSingle(value); } else { return 'fiftieth'; } } /** * @param {?} value * @return {?} */ checkFiftieth(value) { /** @type {?} */ let prefix = 'fifty-'; if (value > 50 && value < 60) { value -= 50; return prefix + this.checkSingle(value); } else { return 'sixtieth'; } } /** * @param {?} value * @return {?} */ checkSixtieth(value) { /** @type {?} */ let prefix = 'sixty-'; if (value > 60 && value < 70) { value -= 60; return prefix + this.checkSingle(value); } else { return 'seventieth'; } } /** * @param {?} value * @return {?} */ checkSeventieth(value) { /** @type {?} */ let prefix = 'seventy-'; if (value > 70 && value < 80) { value -= 70; return prefix + this.checkSingle(value); } else { return 'eightieth'; } } /** * @param {?} value * @return {?} */ checkEightieth(value) { /** @type {?} */ let prefix = 'eighty-'; if (value > 80 && value < 90) { value -= 80; return prefix + this.checkSingle(value); } else { return 'ninetieth'; } } /** * @param {?} value * @return {?} */ checkNinetieth(value) { /** @type {?} */ let prefix = 'ninety-'; if (value > 90 && value < 100) { value -= 90; return prefix + this.checkSingle(value); } else { return 'hundredth'; } } } NumberToTextPipe.decorators = [ { type: Pipe, args: [{ name: 'numberToText' },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXRvLXRleHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLW51bWJlci10by10ZXh0LyIsInNvdXJjZXMiOlsibGliL3BpcGVzL251bWJlci10by10ZXh0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBR2xELE1BQU07Ozs7O0lBQ0osU0FBUyxDQUFDLEtBQVU7O1FBQ2xCLElBQUksTUFBTSxDQUFTO1FBRW5CLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9CLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ2hCOztRQUVELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsT0FBTyxNQUFNLEdBQUcsSUFBSSxDQUFDO0tBQ3RCOzs7OztJQUVPLFdBQVcsQ0FBQyxLQUFhO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzVCLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMzQixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssSUFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtuYW1lOiAnbnVtYmVyVG9UZXh0J30pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJUb1RleHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IG51bWJlcjogbnVtYmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2YgJ3ZhbHVlJyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgbnVtYmVyID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG51bWJlciA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsZXQgdGV4dCA9IHRoaXMuY2hlY2tOdW1iZXIobnVtYmVyKTtcclxuXHJcbiAgICByZXR1cm4gJ1RoZSAnICsgdGV4dDtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBjaGVja051bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmNoZWNrWmVybyh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuICd6ZXJvdGgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8PSAxMClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gMTAgJiYgdmFsdWUgPD0gMjApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUZW50aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gMjAgJiYgdmFsdWUgPD0gMzApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUd2VudGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDMwICYmIHZhbHVlIDw9IDQwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVGhpcnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA0MCAmJiB2YWx1ZSA8PSA1MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0ZvcnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA1MCAmJiB2YWx1ZSA8PSA2MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0ZpZnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA2MCAmJiB2YWx1ZSA8PSA3MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpeHRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA3MCAmJiB2YWx1ZSA8PSA4MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NldmVudGlldGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDgwICYmIHZhbHVlIDw9IDkwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRWlnaHRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA5MCAmJiB2YWx1ZSA8PSAxMDApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tOaW5ldGlldGgodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1plcm8odmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1NpbmdsZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA8IDEwICYmIHZhbHVlID4gMCkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuICdmaXJzdCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAyKVxyXG4gICAgICAgIHJldHVybiAnc2Vjb25kJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDMpXHJcbiAgICAgICAgcmV0dXJuICd0aGlyZCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA0KVxyXG4gICAgICAgIHJldHVybiAnZm91cnRoJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDUpXHJcbiAgICAgICAgcmV0dXJuICdmaWZ0aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA2KVxyXG4gICAgICAgIHJldHVybiAnc2l4dGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNylcclxuICAgICAgICByZXR1cm4gJ3NldmVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gOClcclxuICAgICAgICByZXR1cm4gJ2VpZ2h0aCc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gJ25pbnRoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAndGVudGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RlbnRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID4gMTAgJiYgdmFsdWUgPCAyMCkge1xyXG4gICAgICBpZiAodmFsdWUgPT09IDExKVxyXG4gICAgICAgIHJldHVybiAnZWxldmVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTIpXHJcbiAgICAgICAgcmV0dXJuICd0d2VsZnRoJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDEzKVxyXG4gICAgICAgIHJldHVybiAndGhpcnRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxNClcclxuICAgICAgICByZXR1cm4gJ2ZvdXJ0ZWVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTUpXHJcbiAgICAgICAgcmV0dXJuICdmaWZ0ZWVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTYpXHJcbiAgICAgICAgcmV0dXJuICdzaXh0ZWVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTcpXHJcbiAgICAgICAgcmV0dXJuICdzZXZlbnRlZW50aCc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAxOClcclxuICAgICAgICByZXR1cm4gJ2VpZ2h0ZWVudGgnO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMTkpXHJcbiAgICAgICAgcmV0dXJuICduaW5ldGVlbnRoJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAndHdlbnRpZXRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUd2VudGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJ3R3ZW50eS0nO1xyXG4gICAgaWYgKHZhbHVlID4gMjAgJiYgdmFsdWUgPCAzMCkge1xyXG4gICAgICB2YWx1ZSAtPSAyMDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICd0aGlydGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RoaXJ0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAndGhpcnR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiAzMCAmJiB2YWx1ZSA8IDQwKSB7XHJcbiAgICAgIHZhbHVlIC09IDMwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2ZvcnRpZXRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGb3J0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnZm9ydHktJztcclxuICAgIGlmICh2YWx1ZSA+IDQwICYmIHZhbHVlIDwgNTApIHtcclxuICAgICAgdmFsdWUgLT0gNDA7XHJcbiAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnZmlmdGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZpZnRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICdmaWZ0eS0nO1xyXG4gICAgaWYgKHZhbHVlID4gNTAgJiYgdmFsdWUgPCA2MCkge1xyXG4gICAgICB2YWx1ZSAtPSA1MDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdzaXh0aWV0aCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2l4dGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJ3NpeHR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiA2MCAmJiB2YWx1ZSA8IDcwKSB7XHJcbiAgICAgIHZhbHVlIC09IDYwO1xyXG4gICAgICByZXR1cm4gcHJlZml4ICsgdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3NldmVudGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1NldmVudGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJ3NldmVudHktJztcclxuICAgIGlmICh2YWx1ZSA+IDcwICYmIHZhbHVlIDwgODApIHtcclxuICAgICAgdmFsdWUgLT0gNzA7XHJcbiAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnZWlnaHRpZXRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tFaWdodGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJ2VpZ2h0eS0nO1xyXG4gICAgaWYgKHZhbHVlID4gODAgJiYgdmFsdWUgPCA5MCkge1xyXG4gICAgICB2YWx1ZSAtPSA4MDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICduaW5ldGlldGgnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja05pbmV0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnbmluZXR5LSc7XHJcbiAgICBpZiAodmFsdWUgPiA5MCAmJiB2YWx1ZSA8IDEwMCkge1xyXG4gICAgICB2YWx1ZSAtPSA5MDtcclxuICAgICAgcmV0dXJuIHByZWZpeCArIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdodW5kcmVkdGgnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=