
com.github.dakusui.crest.core.Printable Maven / Gradle / Ivy
package com.github.dakusui.crest.core;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
public enum Printable {
;
public static Function function(String s, Function super T, ? extends R> function) {
Objects.requireNonNull(s);
Objects.requireNonNull(function);
return new Function() {
@Override
public R apply(T t) {
return function.apply(t);
}
public Function compose(Function super V, ? extends T> before) {
Objects.requireNonNull(before);
return new Function() {
@Override
public R apply(V v) {
return function.apply(before.apply(v));
}
@Override
public String toString() {
return String.format("%s->%s", before, s);
}
};
}
public Function andThen(Function super R, ? extends V> after) {
Objects.requireNonNull(after);
return new Function() {
@Override
public V apply(T t) {
return after.apply(function.apply(t));
}
@Override
public String toString() {
return String.format("%s->%s", s, after);
}
};
}
@Override
public String toString() {
return s;
}
};
}
public static Predicate predicate(String s, Predicate super T> predicate) {
return new Predicate() {
@Override
public boolean test(T t) {
return predicate.test(t);
}
@Override
public Predicate and(Predicate super T> other) {
Objects.requireNonNull(other);
return new Predicate() {
@Override
public boolean test(T t) {
return predicate.test(t) && other.test(t);
}
@Override
public String toString() {
return String.format("(%s&&%s)", s, other);
}
};
}
@Override
public Predicate negate() {
return new Predicate() {
@Override
public boolean test(T t) {
return !predicate.test(t);
}
@Override
public String toString() {
return String.format("!%s", s);
}
};
}
@Override
public Predicate or(Predicate super T> other) {
Objects.requireNonNull(other);
return new Predicate() {
@Override
public boolean test(T t) {
return predicate.test(t) || other.test(t);
}
@Override
public String toString() {
return String.format("(%s||%s)", s, other);
}
};
}
@Override
public String toString() {
return s;
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy