arch-unit-ts
Version:
44 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClassesTransformer = void 0;
const Assert_1 = require("../../error/domain/Assert");
class ClassesTransformer {
description;
predicateAggregator;
constructor(description, predicateAggregator) {
Assert_1.Assert.notNullOrUndefined('description', description);
Assert_1.Assert.notNullOrUndefined('predicateAggregator', predicateAggregator);
this.description = description;
this.predicateAggregator = predicateAggregator;
}
addPredicate(predicate) {
return new ClassesTransformer(this.description, this.predicateAggregator.add(predicate));
}
switchModeAnd() {
return new ClassesTransformer(this.description, this.predicateAggregator.thatANDs());
}
switchModeOr() {
return new ClassesTransformer(this.description, this.predicateAggregator.thatORs());
}
transform(classes) {
if (this.predicateAggregator.getPredicate().isEmpty()) {
return classes;
}
return classes.filter(aClass => this.predicateAggregator
.getPredicate()
.map(predicate => predicate.test(aClass))
.orElseThrow());
}
getDescription() {
return this.description;
}
getFullDescription() {
return (this.description +
this.predicateAggregator
.getPredicate()
.map(predicate => ' ' + predicate.description)
.orElse(''));
}
}
exports.ClassesTransformer = ClassesTransformer;
//# sourceMappingURL=ClassesTransformer.js.map