Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / globule / node_modules / lodash / _getTag.js
1 var DataView = require('./_DataView'),
2     Map = require('./_Map'),
3     Promise = require('./_Promise'),
4     Set = require('./_Set'),
5     WeakMap = require('./_WeakMap'),
6     baseGetTag = require('./_baseGetTag'),
7     toSource = require('./_toSource');
8
9 /** `Object#toString` result references. */
10 var mapTag = '[object Map]',
11     objectTag = '[object Object]',
12     promiseTag = '[object Promise]',
13     setTag = '[object Set]',
14     weakMapTag = '[object WeakMap]';
15
16 var dataViewTag = '[object DataView]';
17
18 /** Used to detect maps, sets, and weakmaps. */
19 var dataViewCtorString = toSource(DataView),
20     mapCtorString = toSource(Map),
21     promiseCtorString = toSource(Promise),
22     setCtorString = toSource(Set),
23     weakMapCtorString = toSource(WeakMap);
24
25 /**
26  * Gets the `toStringTag` of `value`.
27  *
28  * @private
29  * @param {*} value The value to query.
30  * @returns {string} Returns the `toStringTag`.
31  */
32 var getTag = baseGetTag;
33
34 // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
35 if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
36     (Map && getTag(new Map) != mapTag) ||
37     (Promise && getTag(Promise.resolve()) != promiseTag) ||
38     (Set && getTag(new Set) != setTag) ||
39     (WeakMap && getTag(new WeakMap) != weakMapTag)) {
40   getTag = function(value) {
41     var result = baseGetTag(value),
42         Ctor = result == objectTag ? value.constructor : undefined,
43         ctorString = Ctor ? toSource(Ctor) : '';
44
45     if (ctorString) {
46       switch (ctorString) {
47         case dataViewCtorString: return dataViewTag;
48         case mapCtorString: return mapTag;
49         case promiseCtorString: return promiseTag;
50         case setCtorString: return setTag;
51         case weakMapCtorString: return weakMapTag;
52       }
53     }
54     return result;
55   };
56 }
57
58 module.exports = getTag;