card-factory
Version:
A comprehensive library for card manipulation
20 lines (19 loc) • 850 B
JavaScript
export class Rules {
passRules;
receiveRules;
type;
constructor(passRules = [() => true], receiveRules = [() => true], type = {
pass: "every",
receive: "every",
}) {
this.passRules = passRules;
this.receiveRules = receiveRules;
this.type = type;
}
canPass = (source, destination, card, ...extraArgs) => this.type.pass === "every"
? this.passRules.every((rule) => rule(source, destination, card, ...extraArgs))
: this.passRules.some((rule) => rule(source, destination, card, ...extraArgs));
canReceive = (source, destination, card, ...extraArgs) => this.type.receive === "every"
? this.receiveRules.every((rule) => rule(source, destination, card, ...extraArgs))
: this.receiveRules.some((rule) => rule(source, destination, card, ...extraArgs));
}