/* jshint strict: false, unused: false */ /* global FORMAT_DATETIME, PARSE_DATETIME */ // ////////////////////////////////////////////////////////////////////////////// // / @brief formatter functions // / // / @file // / // / DISCLAIMER // / // / Copyright 2011-2012 triagens GmbH, Cologne, Germany // / // / Licensed under the Apache License, Version 2.0 (the "License") // / you may not use this file except in compliance with the License. // / You may obtain a copy of the License at // / // / http://www.apache.org/licenses/LICENSE-2.0 // / // / Unless required by applicable law or agreed to in writing, software // / distributed under the License is distributed on an "AS IS" BASIS, // / WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // / See the License for the specific language governing permissions and // / limitations under the License. // / // / Copyright holder is triAGENS GmbH, Cologne, Germany // / // / @author Dr. Frank Celler // / @author Copyright 2011-2012, triAGENS GmbH, Cologne, Germany // ////////////////////////////////////////////////////////////////////////////// var arangodb = require('@arangodb'); // ////////////////////////////////////////////////////////////////////////////// // / @brief parses a number // ////////////////////////////////////////////////////////////////////////////// exports.number = function (value, info, lang) { var error; var format; var result; if (info.hasOwnProperty('format')) { format = info.format; if (format === '%d') { result = value.toFixed(0); } else if (format === '%f') { result = String(value); } else { error = new arangodb.ArangoError(); error.errorNum = arangodb.ERROR_NOT_IMPLEMENTED; error.errorMessage = "format '" + format + "' not implemented"; throw error; } } else { result = value; } return result; }; // ////////////////////////////////////////////////////////////////////////////// // / @brief format a float value // ////////////////////////////////////////////////////////////////////////////// exports.formatFloat = function (value, args) { if (undefined === value || null === value) { return null; } if (undefined === args) { args = {}; } var decPlaces = isNaN(args.decPlaces = Math.abs(args.decPlaces)) ? 2 : args.decPlaces; var decSeparator = args.decSeparator === undefined ? '.' : args.decSeparator; var thouSeparator = args.thouSeparator === undefined ? ',' : args.thouSeparator; var sign = value < 0 ? '-' : ''; var i = ''; i += parseInt(value = Math.abs(+value || 0).toFixed(decPlaces), 10); var j = i.length; j = (j > 3) ? (j % 3) : 0; return sign + (j ? i.substr(0, j) + thouSeparator : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thouSeparator) + (decPlaces ? decSeparator + Math.abs(value - i).toFixed(decPlaces).slice(2) : ''); }; // ////////////////////////////////////////////////////////////////////////////// // / @brief format a datetime value // ////////////////////////////////////////////////////////////////////////////// exports.formatDatetime = function (value, args) { if (undefined === value || null === value) { return null; } if (undefined === args) { args = {}; } if (undefined === args.pattern) { args.pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; } if (undefined === args.timezone) { args.timezone = null; } if (undefined === args.lang) { args.lang = null; } return FORMAT_DATETIME(value, args.pattern, args.timezone, args.lang); }; // ////////////////////////////////////////////////////////////////////////////// // / @brief join array // ////////////////////////////////////////////////////////////////////////////// exports.joinNumbers = function (value, args) { if (undefined === value || null === value) { return null; } return value.join(); }; // ////////////////////////////////////////////////////////////////////////////// // / @brief parse a number // ////////////////////////////////////////////////////////////////////////////// exports.parseFloat = function (value, args) { if (undefined === value || null === value) { return null; } if (undefined === args) { args = {}; } var decPlaces = isNaN(args.decPlaces = Math.abs(args.decPlaces)) ? 2 : args.decPlaces; var decSeparator = args.decSeparator === undefined ? '.' : args.decSeparator; var thouSeparator = args.thouSeparator === undefined ? ',' : args.thouSeparator; var str = ''; str += value; str = str.replace(thouSeparator, ''); if ('.' !== decSeparator) { str = str.replace(decSeparator, '.'); } if (decPlaces > 0) { return parseFloat(str); } return parseFloat(str); }; // ////////////////////////////////////////////////////////////////////////////// // / @brief format a datetime value // ////////////////////////////////////////////////////////////////////////////// exports.parseDatetime = function (value, args) { if (undefined === value || null === value) { return null; } if (undefined === args) { args = {}; } if (undefined === args.pattern) { args.pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; } if (undefined === args.timezone) { args.timezone = null; } if (undefined === args.lang) { args.lang = null; } return PARSE_DATETIME(value, args.pattern, args.timezone, args.lang); }; // ////////////////////////////////////////////////////////////////////////////// // / @brief split array // ////////////////////////////////////////////////////////////////////////////// exports.splitNumbers = function (value, args) { var result = []; var i; if (undefined === value) { return null; } var values = value.split(','); for (i = 0; i < values.length; ++i) { result[i] = parseFloat(values[i]); } return result; }; // ////////////////////////////////////////////////////////////////////////////// // / @brief validate > // ////////////////////////////////////////////////////////////////////////////// exports.validateNotNull = function (value, args) { if (undefined === value || null === value) { return false; } return true; }; // ////////////////////////////////////////////////////////////////////////////// // / @brief validate > // ////////////////////////////////////////////////////////////////////////////// exports.validateGT = function (value, args) { if (undefined === value) { return false; } if (undefined === args) { args = {}; } var cmpValue = args.compareValue; return value > cmpValue; }; // ////////////////////////////////////////////////////////////////////////////// // / @brief validate > // ////////////////////////////////////////////////////////////////////////////// exports.validateEQ = function (value, args) { if (undefined === value) { return false; } if (undefined === args) { args = {}; } var cmpValue = args.compareValue; return value === cmpValue; };