      1 var comb = exports;
      2
      3 /**
      4  *
      5  * Converts an arguments object to an array
      6  * @function
      7  * @param {Arguments} args the arguments object to convert
      8  * @memberOf comb
      9  * @returns {Array} array version of the arguments object
     10  */
     11 var argsToArray = comb.argsToArray = function(args) {
     12     return Array.prototype.slice.call(args);
     13 };
     14
     15 /**
     16  * Determines if obj is a boolean
     17  *
     18  * @param {Anything} obj the thing to test if it is a boolean
     19  *
     20  * @returns {Boolean} true if it is a boolean false otherwise
     21  */
     22 comb.isBoolean = function(obj) {
     23     var undef, type = typeof obj;
     24     return obj != undef && type == "boolean" || type == "Boolean";
     25 };
     26
     27 /**
     28  * Determines if obj is undefined
     29  *
     30  * @param {Anything} obj the thing to test if it is undefined
     31  * @returns {Boolean} true if it is undefined false otherwise
     32  */
     33 comb.isUndefined = function(obj) {
     34     var undef;
     35     return obj !== null && obj === undef;
     36 };
     37
     38 /**
     39  * Determines if obj is undefined or null
     40  *
     41  * @param {Anything} obj the thing to test if it is undefined or null
     42  * @returns {Boolean} true if it is undefined or null false otherwise
     43  */
     44 comb.isUndefinedOrNull = function(obj) {
     45     return comb.isUndefined(obj) || comb.isNull(obj);
     46 }
     47
     48 /**
     49  * Determines if obj is null
     50  *
     51  * @param {Anything} obj the thing to test if it is null
     52  *
     53  * @returns {Boolean} true if it is null false otherwise
     54  */
     55 comb.isNull = function(obj) {
     56     var undef;
     57     return obj !== undef && obj == null;
     58 };
     59
     60 var isInstance = function(obj, clazz) {
     61     if (typeof clazz == "function") {
     62         return obj instanceof clazz;
     63     } else {
     64         return false;
     65     }
     66 };
     67
     68 /**
     69  * Determines if obj is an instance of a particular class
     70  *
     71  * @param {Anything} obj the thing to test if it and instnace of a class
     72  * @param {Object} Clazz used to determine if the object is an instance of
     73  *
     74  * @returns {Boolean} true if it is an instance of the clazz false otherwise
     75  */
     76 comb.isInstanceOf = function(obj, clazz) {
     77     return argsToArray(arguments).slice(1).some(function(c) {
     78         return isInstance(obj, c);
     79     });
     80 };