all files / document/automatic-fields/ pdf-numbers-convertor.js

19.79% Statements 19/96
10% Branches 1/10
33.33% Functions 3/9
19.79% Lines 19/96
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121     40× 40×         40× 40×                           40×                                                                                                                                                                      
define(["require", "exports", "./../../pages/enum"], function (require, exports, enum_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var PdfNumbersConvertor = (function () {
        function PdfNumbersConvertor() {
        }
        PdfNumbersConvertor.convert = function (intArabic, numberStyle) {
            var result = '';
            switch (numberStyle) {
                case enum_1.PdfNumberStyle.None:
                    result = '';
                    break;
                case enum_1.PdfNumberStyle.Numeric:
                    result = intArabic.toString();
                    break;
                case enum_1.PdfNumberStyle.LowerLatin:
                    result = this.arabicToLetter(intArabic).toLowerCase();
                    break;
                case enum_1.PdfNumberStyle.LowerRoman:
                    result = this.arabicToRoman(intArabic).toLowerCase();
                    break;
                case enum_1.PdfNumberStyle.UpperLatin:
                    result = this.arabicToLetter(intArabic);
                    break;
                case enum_1.PdfNumberStyle.UpperRoman:
                    result = this.arabicToRoman(intArabic);
                    break;
            }
            return result;
        };
        PdfNumbersConvertor.arabicToRoman = function (intArabic) {
            var retval = '';
            var retvalM = this.generateNumber(intArabic, 1000, 'M');
            retval += retvalM.returnValue;
            intArabic = retvalM.intArabic;
            var retvalCM = this.generateNumber(intArabic, 900, 'CM');
            retval += retvalCM.returnValue;
            intArabic = retvalCM.intArabic;
            var retvalD = this.generateNumber(intArabic, 500, 'D');
            retval += retvalD.returnValue;
            intArabic = retvalD.intArabic;
            var retvalCD = this.generateNumber(intArabic, 400, 'CD');
            retval += retvalCD.returnValue;
            intArabic = retvalCD.intArabic;
            var retvalC = this.generateNumber(intArabic, 100, 'C');
            retval += retvalC.returnValue;
            intArabic = retvalC.intArabic;
            var retvalXC = this.generateNumber(intArabic, 90, 'XC');
            retval += retvalXC.returnValue;
            intArabic = retvalXC.intArabic;
            var retvalL = this.generateNumber(intArabic, 50, 'L');
            retval += retvalL.returnValue;
            intArabic = retvalL.intArabic;
            var retvalXL = this.generateNumber(intArabic, 40, 'XL');
            retval += retvalXL.returnValue;
            intArabic = retvalXL.intArabic;
            var retvalX = this.generateNumber(intArabic, 10, 'X');
            retval += retvalX.returnValue;
            intArabic = retvalX.intArabic;
            var retvalIX = this.generateNumber(intArabic, 9, 'IX');
            retval += retvalIX.returnValue;
            intArabic = retvalIX.intArabic;
            var retvalV = this.generateNumber(intArabic, 5, 'V');
            retval += retvalV.returnValue;
            intArabic = retvalV.intArabic;
            var retvalIV = this.generateNumber(intArabic, 4, 'IV');
            retval += retvalIV.returnValue;
            intArabic = retvalIV.intArabic;
            var retvalI = this.generateNumber(intArabic, 1, 'I');
            retval += retvalI.returnValue;
            intArabic = retvalI.intArabic;
            return retval.toString();
        };
        PdfNumbersConvertor.arabicToLetter = function (arabic) {
            var stack = this.convertToLetter(arabic);
            var result = '';
            while (stack.length > 0) {
                var num = stack.pop();
                result = this.appendChar(result, num);
            }
            return result.toString();
        };
        PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {
            var numberstring = '';
            while (value >= magnitude) {
                value -= magnitude;
                numberstring += letter;
            }
            return { returnValue: numberstring.toString(), intArabic: value };
        };
        PdfNumbersConvertor.convertToLetter = function (arabic) {
            if (arabic <= 0) {
                throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');
            }
            var stack = [];
            while (arabic > this.letterLimit) {
                var remainder = arabic % this.letterLimit;
                if (remainder === 0.0) {
                    arabic = arabic / this.letterLimit - 1;
                    remainder = this.letterLimit;
                }
                else {
                    arabic /= this.letterLimit;
                }
                stack.push(remainder);
            }
            stack.push(arabic);
            return stack;
        };
        PdfNumbersConvertor.appendChar = function (builder, value) {
            var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);
            builder += letter;
            return builder;
        };
        PdfNumbersConvertor.letterLimit = 26.0;
        PdfNumbersConvertor.acsiiStartIndex = (65 - 1);
        return PdfNumbersConvertor;
    }());
    exports.PdfNumbersConvertor = PdfNumbersConvertor;
});