generate-compare-function
Version:
generate compare function by object paths.
23 lines • 948 B
JavaScript
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