| 'use strict'; |
| |
| var toStr = Object.prototype.toString; |
| var hasSymbols = require('has-symbols')(); |
| |
| if (hasSymbols) { |
| var symToStr = Symbol.prototype.toString; |
| var symStringRegex = /^Symbol\(.*\)$/; |
| var isSymbolObject = function isRealSymbolObject(value) { |
| if (typeof value.valueOf() !== 'symbol') { |
| return false; |
| } |
| return symStringRegex.test(symToStr.call(value)); |
| }; |
| |
| module.exports = function isSymbol(value) { |
| if (typeof value === 'symbol') { |
| return true; |
| } |
| if (toStr.call(value) !== '[object Symbol]') { |
| return false; |
| } |
| try { |
| return isSymbolObject(value); |
| } catch (e) { |
| return false; |
| } |
| }; |
| } else { |
| |
| module.exports = function isSymbol(value) { |
| // this environment does not support Symbols. |
| return false && value; |
| }; |
| } |