UNPKG

generate-compare-function

Version:
23 lines 948 B
import generateFunction from 'generate-function'; export function generateCompareFunction(paths) { var generator = generateFunction(); generator("\n function compare(object1, object2) {\n return (\n " + paths.map(function (path) { return "(" + createSafeObjectRefs(generator, 'object1', path) + ") === (" + createSafeObjectRefs(generator, 'object2', path) + ")"; }).join(' && ') + "\n );\n }\n "); return generator.toFunction(); } ; /** * createSafeObjectRefs * * Usage: * createSafeObjectRefs('state1', ['path', 'to', 'value']) * ↓↓↓ * `(state1 && state1.path && state1.path.to && state1.path.to.value)` */ var createSafeObjectRefs = function (generator, name, paths) { return paths.reduce(function (refs, path) { return refs.concat(generator.property(refs[refs.length - 1], path)); }, [name]).join(' && '); }; //# sourceMappingURL=generate-compare-function.js.map