generate-compare-function
Version:
generate compare function by object paths.
29 lines • 1.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var generate_function_1 = __importDefault(require("generate-function"));
function generateCompareFunction(paths) {
var generator = generate_function_1.default();
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();
}
exports.generateCompareFunction = generateCompareFunction;
;
/**
* 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