UNPKG

generate-compare-function

Version:
29 lines 1.25 kB
"use strict"; 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