Sha256: 49ff561397669f6e0707d9eb8542a6fedad14e7930cad610538e596129dd41fe

Contents?: true

Size: 784 Bytes

Versions: 27

Compression:

Stored size: 784 Bytes

Contents

var has = Object.prototype.hasOwnProperty;

export function dequal(foo, bar) {
	var ctor, len;
	if (foo === bar) return true;

	if (foo && bar && (ctor=foo.constructor) === bar.constructor) {
		if (ctor === Date) return foo.getTime() === bar.getTime();
		if (ctor === RegExp) return foo.toString() === bar.toString();

		if (ctor === Array) {
			if ((len=foo.length) === bar.length) {
				while (len-- && dequal(foo[len], bar[len]));
			}
			return len === -1;
		}

		if (!ctor || typeof foo === 'object') {
			len = 0;
			for (ctor in foo) {
				if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
				if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
			}
			return Object.keys(bar).length === len;
		}
	}

	return foo !== foo && bar !== bar;
}

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.25 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.24 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.23 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.22 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.21 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.20 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.19 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.18 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.17 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.16 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.15 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.14 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.13 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.12 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.11 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.10 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.9 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.8 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs
clapton-0.0.7 lib/clapton/javascripts/node_modules/dequal/lite/index.mjs