maycur-business
Version:
maycur business react components of web
77 lines (56 loc) • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = numbervalue;
var _reduce = _interopRequireDefault(require("./reduce"));
var _isempty = _interopRequireDefault(require("./isempty"));
var _iserror = _interopRequireDefault(require("./iserror"));
var _isnumber = _interopRequireDefault(require("./isnumber"));
var _error = require("./error");
var _split = _interopRequireDefault(require("./split"));
var _code = _interopRequireDefault(require("./code"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// Copyright 2015-2018 FormBucket LLC
// Convert a text value into a number value.
function numbervalue(text) {
var decimal_separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ".";
var group_separator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ",";
// Return error when text is error
if ((0, _iserror["default"])(text)) {
return text;
} // Return `#VALUE!` when text is empty
if ((0, _isempty["default"])(text)) {
return _error.ERRORTYPES.value;
} // Return the value when it is already a number.
if ((0, _isnumber["default"])(text)) {
return text;
}
var foundDecimal = false,
len = text.length - 1;
if (text.length === 1) {
if ((0, _code["default"])(text, 0) < 48 || (0, _code["default"])(text, 0) > 57) {
return _error.ERRORTYPES.value;
}
return +text;
}
return (0, _reduce["default"])((0, _split["default"])(text, ""), function (acc, item, index) {
if (acc === _error.ERRORTYPES.value) {
return _error.ERRORTYPES.value;
} else if (len === index) {
if (item === "%") {
return +acc / 100;
}
return +acc.concat(item);
} else if (item === decimal_separator) {
if (foundDecimal) return _error.ERRORTYPES.value;
foundDecimal = true;
return acc.concat(".");
} else if (item === group_separator) {
return acc; // check if between 0 and 9 ascii codes
} else if (item.charCodeAt(0) < 48 || item.charCodeAt(0) > 57) {
return _error.ERRORTYPES.value;
}
return acc.concat(item);
});
}