1 var Symbol = require(
'./_Symbol'),
2 Uint8Array = require(
'./_Uint8Array'),
4 equalArrays = require(
'./_equalArrays'),
5 mapToArray = require(
'./_mapToArray'),
6 setToArray = require(
'./_setToArray');
9 var COMPARE_PARTIAL_FLAG = 1,
10 COMPARE_UNORDERED_FLAG = 2;
13 var boolTag =
'[object Boolean]',
14 dateTag =
'[object Date]',
15 errorTag =
'[object Error]',
16 mapTag =
'[object Map]',
17 numberTag =
'[object Number]',
18 regexpTag =
'[object RegExp]',
19 setTag =
'[object Set]',
20 stringTag =
'[object String]',
21 symbolTag =
'[object Symbol]';
23 var arrayBufferTag =
'[object ArrayBuffer]',
24 dataViewTag =
'[object DataView]';
27 var symbolProto = Symbol ? Symbol.prototype : undefined,
28 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
47 function equalByTag(
object, other, tag, bitmask, customizer, equalFunc, stack) {
50 if ((
object.byteLength != other.byteLength) ||
51 (
object.byteOffset != other.byteOffset)) {
54 object =
object.buffer;
58 if ((
object.byteLength != other.byteLength) ||
59 !equalFunc(
new Uint8Array(
object),
new Uint8Array(other))) {
69 return eq(+
object, +other);
72 return object.name == other.name &&
object.message == other.message;
79 return object == (other +
'');
82 var convert = mapToArray;
85 var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
86 convert || (convert = setToArray);
88 if (
object.size != other.size && !isPartial) {
92 var stacked = stack.get(
object);
94 return stacked == other;
96 bitmask |= COMPARE_UNORDERED_FLAG;
99 stack.set(
object, other);
100 var result = equalArrays(convert(
object), convert(other), bitmask, customizer, equalFunc, stack);
101 stack[
'delete'](object);
106 return symbolValueOf.call(
object) == symbolValueOf.call(other);
112 module.exports = equalByTag;