Source: utils.js

/**
 * Vertebrae Inc
 * @package Cassandra-ORM
 */
"use strict";

/**
 * Determines the tailing argument (callback)
 * @param {object} arguments - an arguments object
 * @example
 * //args = arguments[1, 2, callback, null]
 * getArgCount(args); //3
 * //args = arguments[1, 2, null, callback, null]
 * getArgCount(args); //4
 */
exports.getArgCount = (args) => {
    var argc = args.length;
    while (argc && !args[argc-1]) {
        argc -= 1;
    }
    return argc;
};

/**
 * Filters args by default to Boolean
 * @param {object} arguments - an arguments object
 * @param {mixed} filter - an item passed to Array.prototype.filter
 * @example
 * //args = arguments[1, 2, null, callback]
 * getFilteredArgs(args); //[1,2,callback]
 */
exports.getFilteredArgs = (args, filter) => {
    return (args.length === 1 ? [args[0]] : Array.apply(null, args)).filter(filter || Boolean);
};