MCPcopy Index your code
hub / github.com/angular-ui/ui-router / parse

Function parse

test/angular/1.4/angular.js:19082–19131  ·  view source on GitHub ↗

* Parse a number (as a string) into three components that can be used * for formatting the number. * * (Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/) * * @param {string} numStr The number to parse * @return {object} An object describing this number, co

(numStr)

Source from the content-addressed store, hash-verified

19080 *
19081 */
19082function parse(numStr) {
19083 var exponent = 0, digits, numberOfIntegerDigits;
19084 var i, j, zeros;
19085
19086 // Decimal point?
19087 if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) {
19088 numStr = numStr.replace(DECIMAL_SEP, '');
19089 }
19090
19091 // Exponential form?
19092 if ((i = numStr.search(/e/i)) > 0) {
19093 // Work out the exponent.
19094 if (numberOfIntegerDigits < 0) numberOfIntegerDigits = i;
19095 numberOfIntegerDigits += +numStr.slice(i + 1);
19096 numStr = numStr.substring(0, i);
19097 } else if (numberOfIntegerDigits < 0) {
19098 // There was no decimal point or exponent so it is an integer.
19099 numberOfIntegerDigits = numStr.length;
19100 }
19101
19102 // Count the number of leading zeros.
19103 for (i = 0; numStr.charAt(i) == ZERO_CHAR; i++) {/* jshint noempty: false */}
19104
19105 if (i == (zeros = numStr.length)) {
19106 // The digits are all zero.
19107 digits = [0];
19108 numberOfIntegerDigits = 1;
19109 } else {
19110 // Count the number of trailing zeros
19111 zeros--;
19112 while (numStr.charAt(zeros) == ZERO_CHAR) zeros--;
19113
19114 // Trailing zeros are insignificant so ignore them
19115 numberOfIntegerDigits -= i;
19116 digits = [];
19117 // Convert string to array of digits without leading/trailing zeros.
19118 for (j = 0; i <= zeros; i++, j++) {
19119 digits[j] = +numStr.charAt(i);
19120 }
19121 }
19122
19123 // If the number overflows the maximum allowed digits then use an exponent.
19124 if (numberOfIntegerDigits > MAX_DIGITS) {
19125 digits = digits.splice(0, MAX_DIGITS - 1);
19126 exponent = numberOfIntegerDigits - 1;
19127 numberOfIntegerDigits = 1;
19128 }
19129
19130 return { d: digits, e: exponent, i: numberOfIntegerDigits };
19131}
19132
19133/**
19134 * Round the parsed number to the specified number of decimal places

Callers 5

$SceProviderFunction · 0.70
formatNumberFunction · 0.70
stateContextFunction · 0.50
creationContextFunction · 0.50
$ViewDirectiveFillFunction · 0.50

Calls 3

isUndefinedFunction · 0.70
forEachFunction · 0.70
trimFunction · 0.70

Tested by

no test coverage detected