1234567891011121314151617181920212223242526272829 |
- "use strict";
-
- /**
- * 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 "";
- }
- };
|