Spaces:
Sleeping
Sleeping
; | |
/** | |
* Returns a display name for a function | |
* | |
* @param {Function} func | |
* @returns {string} | |
*/ | |
module.exports = function functionName(func) { | |
if (!func) { | |
return ""; | |
} | |
try { | |
return ( | |
func.displayName || | |
func.name || | |
// Use function decomposition as a last resort to get function | |
// name. Does not rely on function decomposition to work - if it | |
// doesn't debugging will be slightly less informative | |
// (i.e. toString will say 'spy' rather than 'myFunc'). | |
(String(func).match(/function ([^\s(]+)/) || [])[1] | |
); | |
} catch (e) { | |
// Stringify may fail and we might get an exception, as a last-last | |
// resort fall back to empty string. | |
return ""; | |
} | |
}; | |