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

Function parse

lib/test/angular/1.7.0/angular.js:21828–21877  ·  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

21826 *
21827 */
21828function parse(numStr) {
21829 var exponent = 0, digits, numberOfIntegerDigits;
21830 var i, j, zeros;
21831
21832 // Decimal point?
21833 if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) {
21834 numStr = numStr.replace(DECIMAL_SEP, '');
21835 }
21836
21837 // Exponential form?
21838 if ((i = numStr.search(/e/i)) > 0) {
21839 // Work out the exponent.
21840 if (numberOfIntegerDigits < 0) numberOfIntegerDigits = i;
21841 numberOfIntegerDigits += +numStr.slice(i + 1);
21842 numStr = numStr.substring(0, i);
21843 } else if (numberOfIntegerDigits < 0) {
21844 // There was no decimal point or exponent so it is an integer.
21845 numberOfIntegerDigits = numStr.length;
21846 }
21847
21848 // Count the number of leading zeros.
21849 for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */ }
21850
21851 if (i === (zeros = numStr.length)) {
21852 // The digits are all zero.
21853 digits = [0];
21854 numberOfIntegerDigits = 1;
21855 } else {
21856 // Count the number of trailing zeros
21857 zeros--;
21858 while (numStr.charAt(zeros) === ZERO_CHAR) zeros--;
21859
21860 // Trailing zeros are insignificant so ignore them
21861 numberOfIntegerDigits -= i;
21862 digits = [];
21863 // Convert string to array of digits without leading/trailing zeros.
21864 for (j = 0; i <= zeros; i++, j++) {
21865 digits[j] = +numStr.charAt(i);
21866 }
21867 }
21868
21869 // If the number overflows the maximum allowed digits then use an exponent.
21870 if (numberOfIntegerDigits > MAX_DIGITS) {
21871 digits = digits.splice(0, MAX_DIGITS - 1);
21872 exponent = numberOfIntegerDigits - 1;
21873 numberOfIntegerDigits = 1;
21874 }
21875
21876 return { d: digits, e: exponent, i: numberOfIntegerDigits };
21877}
21878
21879/**
21880 * 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