
com.github.dakusui.crest.utils.printable.PrintablePredicate Maven / Gradle / Ivy
package com.github.dakusui.crest.utils.printable;
import java.util.function.Predicate;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
public class PrintablePredicate implements Predicate {
final Predicate super T> predicate;
final String s;
public PrintablePredicate(String s, Predicate super T> predicate) {
this.predicate = requireNonNull(predicate);
this.s = requireNonNull(s);
}
@Override
public boolean test(T t) {
return predicate.test(t);
}
@Override
public Predicate and(Predicate super T> other) {
requireNonNull(other);
return new PrintablePredicate(format("(%s&&%s)", s, other), t -> predicate.test(t) && other.test(t));
}
@Override
public Predicate negate() {
return new PrintablePredicate<>(String.format("!%s", s), predicate.negate());
}
@Override
public Predicate or(Predicate super T> other) {
requireNonNull(other);
return new PrintablePredicate(format("(%s||%s)", s, other), t -> predicate.test(t) || other.test(t));
}
@Override
public String toString() {
return s;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy