Prado.Util = {} /** * Pad a number with zeros from the left. * @param integer number * @param integer total string length * @return string zero padded number */ Prado.Util.pad = function(number, X) { X = (!X ? 2 : X); number = ""+number; while (number.length < X) number = "0" + number; return number; } /** * Convert a string into integer, returns null if not integer. * @param {string} the string to convert to integer * @type {integer|null} null if string does not represent an integer. */ Prado.Util.toInteger = function(value) { var exp = /^\s*[-\+]?\d+\s*$/; if (value.match(exp) == null) return null; var num = parseInt(value, 10); return (isNaN(num) ? null : num); } /** * Convert a string into a double/float value. Internationalization * is not supported * @param {string} the string to convert to double/float * @param {string} the decimal character * @return {float|null} null if string does not represent a float value */ Prado.Util.toDouble = function(value, decimalchar) { decimalchar = undef(decimalchar) ? "." : decimalchar; var exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalchar + "(\\d+))?\\s*$"); var m = value.match(exp); if (m == null) return null; var cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4]; var num = parseFloat(cleanInput); return (isNaN(num) ? null : num); } /** * Convert strings that represent a currency value (e.g. a float with grouping * characters) to float. E.g. "10,000.50" will become "10000.50". The number * of dicimal digits, grouping and decimal characters can be specified. * The currency input format is very strict, null will be returned if * the pattern does not match. * @param {string} the currency value * @param {string} the grouping character, default is "," * @param {int} number of decimal digits * @param {string} the decimal character, default is "." * @type {float|null} the currency value as float. */ Prado.Util.toCurrency = function(value, groupchar, digits, decimalchar) { groupchar = undef(groupchar) ? "," : groupchar; decimalchar = undef(decimalchar) ? "." : decimalchar; digits = undef(digits) ? 2 : digits; var exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + groupchar + ")*)(\\d+)" + ((digits > 0) ? "(\\" + decimalchar + "(\\d{1," + digits + "}))?" : "") + "\\s*$"); var m = value.match(exp); if (m == null) return null; var intermed = m[2] + m[5] ; var cleanInput = m[1] + intermed.replace( new RegExp("(\\" + groupchar + ")", "g"), "") + ((digits > 0) ? "." + m[7] : ""); var num = parseFloat(cleanInput); return (isNaN(num) ? null : num); } /** * Trim the value, if the value is undefined, empty string is return. * @param {string} string to be trimmed. * @type {string} trimmed string. */ Prado.Util.trim = function(value) { if(!isString(value)) return ""; return value.replace(/^\s+|\s+$/g, ""); }