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
JavaScript
/**
* @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==