geninq
Version:
A JavaScript version of the Linq library for Generators
56 lines (55 loc) • 2.07 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FakeAsyncHash = exports.FakeHash = void 0;
function FakeHash(comparitor) {
let entries = [];
return {
add(item) {
entries = [...entries, item];
},
remove(item) {
entries = entries.filter((e) => !comparitor(e, item));
},
contains(item) {
return entries.find((e) => comparitor(e, item)) != null;
},
};
}
exports.FakeHash = FakeHash;
function FakeAsyncHash(comparitor) {
let entries = [];
return {
add(item) {
entries = [...entries, item];
},
remove(item) {
return __awaiter(this, void 0, void 0, function* () {
const next = [];
for (const entry of entries) {
if (!(yield Promise.resolve(comparitor(entry, item))))
next.push(entry);
}
entries = next;
});
},
contains(item) {
return __awaiter(this, void 0, void 0, function* () {
for (const entry of entries) {
if (yield Promise.resolve(comparitor(entry, item)))
return true;
}
return false;
});
},
};
}
exports.FakeAsyncHash = FakeAsyncHash;