Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / lodash / lang / isTypedArray.js
1 var isLength = require('../internal/isLength'),
2     isObjectLike = require('../internal/isObjectLike');
3
4 /** `Object#toString` result references. */
5 var argsTag = '[object Arguments]',
6     arrayTag = '[object Array]',
7     boolTag = '[object Boolean]',
8     dateTag = '[object Date]',
9     errorTag = '[object Error]',
10     funcTag = '[object Function]',
11     mapTag = '[object Map]',
12     numberTag = '[object Number]',
13     objectTag = '[object Object]',
14     regexpTag = '[object RegExp]',
15     setTag = '[object Set]',
16     stringTag = '[object String]',
17     weakMapTag = '[object WeakMap]';
18
19 var arrayBufferTag = '[object ArrayBuffer]',
20     float32Tag = '[object Float32Array]',
21     float64Tag = '[object Float64Array]',
22     int8Tag = '[object Int8Array]',
23     int16Tag = '[object Int16Array]',
24     int32Tag = '[object Int32Array]',
25     uint8Tag = '[object Uint8Array]',
26     uint8ClampedTag = '[object Uint8ClampedArray]',
27     uint16Tag = '[object Uint16Array]',
28     uint32Tag = '[object Uint32Array]';
29
30 /** Used to identify `toStringTag` values of typed arrays. */
31 var typedArrayTags = {};
32 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
33 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
34 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
35 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
36 typedArrayTags[uint32Tag] = true;
37 typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
38 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
39 typedArrayTags[dateTag] = typedArrayTags[errorTag] =
40 typedArrayTags[funcTag] = typedArrayTags[mapTag] =
41 typedArrayTags[numberTag] = typedArrayTags[objectTag] =
42 typedArrayTags[regexpTag] = typedArrayTags[setTag] =
43 typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
44
45 /** Used for native method references. */
46 var objectProto = Object.prototype;
47
48 /**
49  * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
50  * of values.
51  */
52 var objToString = objectProto.toString;
53
54 /**
55  * Checks if `value` is classified as a typed array.
56  *
57  * @static
58  * @memberOf _
59  * @category Lang
60  * @param {*} value The value to check.
61  * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
62  * @example
63  *
64  * _.isTypedArray(new Uint8Array);
65  * // => true
66  *
67  * _.isTypedArray([]);
68  * // => false
69  */
70 function isTypedArray(value) {
71   return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
72 }
73
74 module.exports = isTypedArray;