UNPKG

@dashkite/joy

Version:

*The simplicity of Lodash with the functional flair of Rambda.*

95 lines (94 loc) 8.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get complement () { return complement; }, get difference () { return difference; }, get dupes () { return dupes; }, get intersection () { return intersection; }, get union () { return union; }, get unique () { return unique; } }); const _function = require("./function"); var complement, difference, dupes, intersection, union, unique; union = function(ax, bx) { var b, cx; cx = new Set(ax); for (b of bx){ cx.add(b); } return cx; }; intersection = (0, _function.curry)(function(ax, bx) { var a, cx; bx = new Set(bx); cx = new Set(); for (a of ax){ if (bx.has(a)) { cx.add(a); } } return cx; }); complement = function(ax, bx) { var cx, d, dx; ax = new Set(ax); bx = new Set(bx); cx = new Set(); dx = union(ax, bx); for (d of dx){ if (!bx.has(d) || !ax.has(d)) { cx.add(d); } } return cx; }; difference = function(ax, bx) { var a, cx; bx = new Set(bx); cx = new Set(); for (a of ax){ if (!bx.has(a)) { cx.add(a); } } return cx; }; unique = function(ax) { return new Set(ax); }; dupes = function(ax) { var a, bx, cx; bx = new Set(); // items we've seen at least once cx = new Set(); // items we've seen at least twice for (a of ax){ if (bx.has(a)) { cx.add(a); } else { bx.add(a); } } return cx; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3NldC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUSxLQUFSO0NBQUEsTUFBQTs7QUFFQSxLQUFBLEdBQVEsUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDUixNQUFBLENBQUEsRUFBQTtFQUFFLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBUSxFQUFSO0VBQ0wsS0FBQSxPQUFBO0lBQUEsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQO0VBQUE7U0FDQTtBQUhNOztBQUtSLFlBQUEsR0FBZSxLQUFBLENBQU0sUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDckIsTUFBQSxDQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQVEsRUFBUjtFQUNMLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBQTtFQUNMLEtBQUEsT0FBQTtRQUE0QixFQUFFLENBQUMsR0FBSCxDQUFPLENBQVA7TUFBNUIsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQOztFQUFBO1NBQ0E7QUFKbUIsQ0FBTjs7QUFNZixVQUFBLEdBQWEsUUFBQSxDQUFDLEVBQUQsRUFBSyxFQUFMLENBQUE7QUFDYixNQUFBLEVBQUEsRUFBQSxDQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQVEsRUFBUjtFQUNMLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBUSxFQUFSO0VBQ0wsRUFBQSxHQUFLLElBQUksR0FBSixDQUFBO0VBQ0wsRUFBQSxHQUFLLEtBQUEsQ0FBTSxFQUFOLEVBQVUsRUFBVjtFQUNMLEtBQUEsT0FBQTtRQUE0QixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUgsQ0FBTyxDQUFQLENBQUQsQ0FBRCxJQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsQ0FBRDtNQUE1QyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVA7O0VBQUE7U0FDQTtBQU5XOztBQVFiLFVBQUEsR0FBYSxRQUFBLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBQTtBQUNiLE1BQUEsQ0FBQSxFQUFBO0VBQUUsRUFBQSxHQUFLLElBQUksR0FBSixDQUFRLEVBQVI7RUFDTCxFQUFBLEdBQUssSUFBSSxHQUFKLENBQUE7RUFDTCxLQUFBLE9BQUE7UUFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUCxDQUFEO01BQTdCLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUDs7RUFBQTtTQUNBO0FBSlc7O0FBTWIsTUFBQSxHQUFTLFFBQUEsQ0FBQyxFQUFELENBQUE7U0FBUSxJQUFJLEdBQUosQ0FBUSxFQUFSO0FBQVI7O0FBRVQsS0FBQSxHQUFRLFFBQUEsQ0FBQyxFQUFELENBQUE7QUFDUixNQUFBLENBQUEsRUFBQSxFQUFBLEVBQUE7RUFBRSxFQUFBLEdBQUssSUFBSSxHQUFKLENBQUEsRUFBUDtFQUNFLEVBQUEsR0FBSyxJQUFJLEdBQUosQ0FBQSxFQURQO0VBRUUsS0FBQSxPQUFBO0lBQ0UsSUFBRyxFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsQ0FBSDtNQUFpQixFQUFFLENBQUMsR0FBSCxDQUFPLENBQVAsRUFBakI7S0FBQSxNQUFBO01BQStCLEVBQUUsQ0FBQyxHQUFILENBQU8sQ0FBUCxFQUEvQjs7RUFERjtTQUVBO0FBTE07O0FBT1IsT0FBQTtFQUNFLEtBREY7RUFFRSxZQUZGO0VBR0UsVUFIRjtFQUlFLFVBSkY7RUFLRSxNQUxGO0VBTUUsS0FORiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Vycnl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxudW5pb24gPSAoYXgsIGJ4KSAtPlxuICBjeCA9IG5ldyBTZXQgYXhcbiAgY3guYWRkIGIgZm9yIGIgZnJvbSBieFxuICBjeFxuXG5pbnRlcnNlY3Rpb24gPSBjdXJyeSAoYXgsIGJ4KSAtPlxuICBieCA9IG5ldyBTZXQgYnhcbiAgY3ggPSBuZXcgU2V0XG4gIGN4LmFkZCBhIGZvciBhIGZyb20gYXggd2hlbiBieC5oYXMgYVxuICBjeFxuXG5jb21wbGVtZW50ID0gKGF4LCBieCkgLT5cbiAgYXggPSBuZXcgU2V0IGF4XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgZHggPSB1bmlvbiBheCwgYnhcbiAgY3guYWRkIGQgZm9yIGQgZnJvbSBkeCB3aGVuICEoYnguaGFzIGQpIHx8ICEoYXguaGFzIGQpXG4gIGN4XG5cbmRpZmZlcmVuY2UgPSAoYXgsIGJ4KSAtPlxuICBieCA9IG5ldyBTZXQgYnhcbiAgY3ggPSBuZXcgU2V0XG4gIGN4LmFkZCBhIGZvciBhIGZyb20gYXggd2hlbiAhKGJ4LmhhcyBhKVxuICBjeFxuXG51bmlxdWUgPSAoYXgpIC0+IG5ldyBTZXQgYXhcblxuZHVwZXMgPSAoYXgpIC0+XG4gIGJ4ID0gbmV3IFNldCAjIGl0ZW1zIHdlJ3ZlIHNlZW4gYXQgbGVhc3Qgb25jZVxuICBjeCA9IG5ldyBTZXQgIyBpdGVtcyB3ZSd2ZSBzZWVuIGF0IGxlYXN0IHR3aWNlXG4gIGZvciBhIGZyb20gYXhcbiAgICBpZiBieC5oYXMgYSB0aGVuIGN4LmFkZCBhIGVsc2UgYnguYWRkIGFcbiAgY3hcblxuZXhwb3J0IHtcbiAgdW5pb25cbiAgaW50ZXJzZWN0aW9uXG4gIGNvbXBsZW1lbnRcbiAgZGlmZmVyZW5jZVxuICB1bmlxdWVcbiAgZHVwZXNcbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/set.coffee //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvc2V0LmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuXG51bmlvbiA9IChheCwgYngpIC0+XG4gIGN4ID0gbmV3IFNldCBheFxuICBjeC5hZGQgYiBmb3IgYiBmcm9tIGJ4XG4gIGN4XG5cbmludGVyc2VjdGlvbiA9IGN1cnJ5IChheCwgYngpIC0+XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgY3guYWRkIGEgZm9yIGEgZnJvbSBheCB3aGVuIGJ4LmhhcyBhXG4gIGN4XG5cbmNvbXBsZW1lbnQgPSAoYXgsIGJ4KSAtPlxuICBheCA9IG5ldyBTZXQgYXhcbiAgYnggPSBuZXcgU2V0IGJ4XG4gIGN4ID0gbmV3IFNldFxuICBkeCA9IHVuaW9uIGF4LCBieFxuICBjeC5hZGQgZCBmb3IgZCBmcm9tIGR4IHdoZW4gIShieC5oYXMgZCkgfHwgIShheC5oYXMgZClcbiAgY3hcblxuZGlmZmVyZW5jZSA9IChheCwgYngpIC0+XG4gIGJ4ID0gbmV3IFNldCBieFxuICBjeCA9IG5ldyBTZXRcbiAgY3guYWRkIGEgZm9yIGEgZnJvbSBheCB3aGVuICEoYnguaGFzIGEpXG4gIGN4XG5cbnVuaXF1ZSA9IChheCkgLT4gbmV3IFNldCBheFxuXG5kdXBlcyA9IChheCkgLT5cbiAgYnggPSBuZXcgU2V0ICMgaXRlbXMgd2UndmUgc2VlbiBhdCBsZWFzdCBvbmNlXG4gIGN4ID0gbmV3IFNldCAjIGl0ZW1zIHdlJ3ZlIHNlZW4gYXQgbGVhc3QgdHdpY2VcbiAgZm9yIGEgZnJvbSBheFxuICAgIGlmIGJ4LmhhcyBhIHRoZW4gY3guYWRkIGEgZWxzZSBieC5hZGQgYVxuICBjeFxuXG5leHBvcnQge1xuICB1bmlvblxuICBpbnRlcnNlY3Rpb25cbiAgY29tcGxlbWVudFxuICBkaWZmZXJlbmNlXG4gIHVuaXF1ZVxu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