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

Function parse

test/angular/1.5/angular.js:20777–20826  ·  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

20775 *
20776 */
20777function parse(numStr) {
20778 var exponent = 0, digits, numberOfIntegerDigits;
20779 var i, j, zeros;
20780
20781 // Decimal point?
20782 if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) {
20783 numStr = numStr.replace(DECIMAL_SEP, '');
20784 }
20785
20786 // Exponential form?
20787 if ((i = numStr.search(/e/i)) > 0) {
20788 // Work out the exponent.
20789 if (numberOfIntegerDigits < 0) numberOfIntegerDigits = i;
20790 numberOfIntegerDigits += +numStr.slice(i + 1);
20791 numStr = numStr.substring(0, i);
20792 } else if (numberOfIntegerDigits < 0) {
20793 // There was no decimal point or exponent so it is an integer.
20794 numberOfIntegerDigits = numStr.length;
20795 }
20796
20797 // Count the number of leading zeros.
20798 for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */ }
20799
20800 if (i === (zeros = numStr.length)) {
20801 // The digits are all zero.
20802 digits = [0];
20803 numberOfIntegerDigits = 1;
20804 } else {
20805 // Count the number of trailing zeros
20806 zeros--;
20807 while (numStr.charAt(zeros) === ZERO_CHAR) zeros--;
20808
20809 // Trailing zeros are insignificant so ignore them
20810 numberOfIntegerDigits -= i;
20811 digits = [];
20812 // Convert string to array of digits without leading/trailing zeros.
20813 for (j = 0; i <= zeros; i++, j++) {
20814 digits[j] = +numStr.charAt(i);
20815 }
20816 }
20817
20818 // If the number overflows the maximum allowed digits then use an exponent.
20819 if (numberOfIntegerDigits > MAX_DIGITS) {
20820 digits = digits.splice(0, MAX_DIGITS - 1);
20821 exponent = numberOfIntegerDigits - 1;
20822 numberOfIntegerDigits = 1;
20823 }
20824
20825 return { d: digits, e: exponent, i: numberOfIntegerDigits };
20826}
20827
20828/**
20829 * Round the parsed number to the specified number of decimal places

Callers 2

$SceProviderFunction · 0.70
formatNumberFunction · 0.70

Calls 3

isUndefinedFunction · 0.70
forEachFunction · 0.70
trimFunction · 0.70

Tested by

no test coverage detected