![JAR search and dependency download from the Maven repository](/logo.png)
no.arktekk.siren.Classes Maven / Gradle / Ivy
package no.arktekk.siren;
import io.vavr.collection.List;
import no.arktekk.siren.util.StreamableIterable;
import java.util.Collections;
import java.util.Iterator;
import java.util.function.Function;
public final class Classes implements StreamableIterable {
private final List classes;
private Classes(List classes) {
this.classes = classes;
}
public Classes(Iterable classes) {
this(List.ofAll(classes));
}
public static Classes of(String clazz, String... classes) {
return new Classes(List.of(classes).prepend(clazz));
}
public static Classes empty() {
return new Classes(Collections.emptyList());
}
public boolean includes(Classes rel) {
List other = rel.classes;
List us = this.classes;
return other.size() <= us.size() && us.zip(other).forAll(t -> t._1.equals(t._2));
}
public Classes add(String clazz) {
return new Classes(classes.append(clazz));
}
public Classes addAll(Classes classes) {
return new Classes(classes.classes.prependAll(this.classes));
}
public Classes remove(String clazz) {
return new Classes(classes.remove(clazz));
}
public Iterator iterator() {
return classes.iterator();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Classes strings = (Classes) o;
return classes.equals(strings.classes);
}
@Override
public int hashCode() {
return classes.hashCode();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy