blob: b5eb5036e77dc85111816056259b6feb6df5ebb2 [file] [log] [blame]
// Generated by CoffeeScript 1.6.3
var common;
module.exports = common = {
/*
Checks to see if o is an object, and it isn't an instance
of some class.
*/
isBareObject: function(o) {
if ((o != null) && o.constructor === Object) {
return true;
}
return false;
},
/*
Returns type of an object, including:
undefined, null, string, number, array,
arguments, element, textnode, whitespace, and object
*/
typeOf: function(item) {
var _ref;
if (item === null) {
return 'null';
}
if (typeof item !== 'object') {
return typeof item;
}
if (Array.isArray(item)) {
return 'array';
}
if (item.nodeName) {
if (item.nodeType === 1) {
return 'element';
}
if (item.nodeType === 3) {
return (_ref = /\S/.test(item.nodeValue)) != null ? _ref : {
'textnode': 'whitespace'
};
}
} else if (typeof item.length === 'number') {
if (item.callee) {
return 'arguments';
}
}
return typeof item;
},
clone: function(item, includePrototype) {
if (includePrototype == null) {
includePrototype = false;
}
switch (common.typeOf(item)) {
case 'array':
return common._cloneArray(item, includePrototype);
case 'object':
return common._cloneObject(item, includePrototype);
default:
return item;
}
},
/*
Deep clone of an object.
From MooTools
*/
_cloneObject: function(o, includePrototype) {
var clone, key;
if (includePrototype == null) {
includePrototype = false;
}
if (common.isBareObject(o)) {
clone = {};
for (key in o) {
clone[key] = common.clone(o[key], includePrototype);
}
return clone;
} else {
if (!includePrototype) {
return o;
}
if (o instanceof Function) {
return o;
}
clone = Object.create(o.constructor.prototype);
for (key in o) {
if (o.hasOwnProperty(key)) {
clone[key] = common.clone(o[key], includePrototype);
}
}
return clone;
}
},
/*
Deep clone of an array.
From MooTools
*/
_cloneArray: function(a, includePrototype) {
var clone, i;
if (includePrototype == null) {
includePrototype = false;
}
i = a.length;
clone = new Array(i);
while (i--) {
clone[i] = common.clone(a[i], includePrototype);
}
return clone;
}
};