diff options
Diffstat (limited to 'node_modules/@sinonjs/commons/lib/class-name.js')
-rw-r--r-- | node_modules/@sinonjs/commons/lib/class-name.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/node_modules/@sinonjs/commons/lib/class-name.js b/node_modules/@sinonjs/commons/lib/class-name.js new file mode 100644 index 0000000..bcd26ba --- /dev/null +++ b/node_modules/@sinonjs/commons/lib/class-name.js @@ -0,0 +1,27 @@ +"use strict"; + +var functionName = require("./function-name"); + +/** + * Returns a display name for a value from a constructor + * + * @param {object} value A value to examine + * @returns {(string|null)} A string or null + */ +function className(value) { + return ( + (value.constructor && value.constructor.name) || + // The next branch is for IE11 support only: + // Because the name property is not set on the prototype + // of the Function object, we finally try to grab the + // name from its definition. This will never be reached + // in node, so we are not able to test this properly. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + (typeof value.constructor === "function" && + /* istanbul ignore next */ + functionName(value.constructor)) || + null + ); +} + +module.exports = className; |