98 lines
1.8 KiB
JavaScript
98 lines
1.8 KiB
JavaScript
|
|
var VnDate = require ('./date');
|
|
|
|
/**
|
|
* Checks if two values are equal, it also checks objects. Basic
|
|
* values are compared using the non-strict equality operator.
|
|
*
|
|
* @param {*} a Value to compare to
|
|
* @param {*} b Value to compare with
|
|
* @return {Boolean} %true if they are equal, %false otherwise
|
|
*/
|
|
function equals (a, b)
|
|
{
|
|
if (a == b)
|
|
return true;
|
|
if (a instanceof Date && b instanceof Date)
|
|
return a.getTime () === b.getTime ();
|
|
if (a && b && (typeof a === 'object') && (typeof b === 'object'))
|
|
{
|
|
for (var key in a)
|
|
if (!equals (a[key], b[key]))
|
|
return false;
|
|
|
|
for (var key in b)
|
|
if (a[key] === undefined && b[key] != null)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
module.exports =
|
|
{
|
|
regexpNumber: /%\.([0-9]+)d/g
|
|
,regexpString: /%s/g
|
|
|
|
,equals: equals
|
|
|
|
,compare: function (a, b)
|
|
{
|
|
if (a === b)
|
|
return true;
|
|
if (a instanceof Date && b instanceof Date)
|
|
return a.getTime () === b.getTime ();
|
|
|
|
return false;
|
|
}
|
|
|
|
,format: function (value, format)
|
|
{
|
|
if (value === null || value === undefined)
|
|
return '';
|
|
|
|
if (format)
|
|
switch (typeof value)
|
|
{
|
|
case 'number':
|
|
return format.replace (this.regexpNumber,
|
|
this.replaceNumber.bind (null, value));
|
|
case 'string':
|
|
return format.replace (this.regexpString,
|
|
this.replaceString.bind (null, value));
|
|
case 'object':
|
|
if (value instanceof Date)
|
|
return VnDate.strftime (value, format);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
|
|
,replaceNumber: function (value, token, digits)
|
|
{
|
|
return new Number (value).toFixed (parseInt (digits));
|
|
}
|
|
|
|
,replaceString: function (value)
|
|
{
|
|
return value;
|
|
}
|
|
};
|
|
|
|
window.sprintf = function (formatString)
|
|
{
|
|
var args = arguments;
|
|
|
|
if (args.length <= 1)
|
|
return formatString;
|
|
|
|
var i = 1;
|
|
return formatString.replace (/%[s|d]/g, function ()
|
|
{
|
|
return args[i++];
|
|
});
|
|
}
|
|
|