'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;
};

}