'use strict'; var assert = require('assert'); /** * A empty function. * * @return {Function} * @public */ exports.noop = function noop() {}; /** * Get a function parameter's names. * * @param {Function} func * @param {Boolean} [useCache], default is true * @return {Array} names */ exports.getParamNames = function getParamNames(func, cache) { var type = typeof func; assert(type === 'function', 'The "func" must be a function. Received type "' + type + '"'); cache = cache !== false; if (cache && func.__cache_names) { return func.__cache_names; } var str = func.toString(); var names = str.slice(str.indexOf('(') + 1, str.indexOf(')')).match(/([^\s,]+)/g) || []; func.__cache_names = names; return names; };