mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 02:20:57 +00:00
implement Bifunctor Pair
This commit is contained in:
@@ -8,8 +8,8 @@ import org.jetbrains.annotations.ApiStatus.Experimental;
|
||||
|
||||
import com.dfsek.terra.api.util.cache.DoubleSeededVector2Key;
|
||||
import com.dfsek.terra.api.util.cache.DoubleSeededVector3Key;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair.Mutable;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair.Mutable;
|
||||
|
||||
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.StrVar
|
||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||
import com.dfsek.terra.addons.terrascript.tokenizer.Token;
|
||||
import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -5,7 +5,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable.ReturnType;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
public class Scope {
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Scope;
|
||||
import com.dfsek.terra.addons.terrascript.tokenizer.Position;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
* reference the LICENSE file in the common/api directory.
|
||||
*/
|
||||
|
||||
package com.dfsek.terra.api.util.generic.pair;
|
||||
package com.dfsek.terra.api.util.generic.data.types;
|
||||
|
||||
import com.dfsek.terra.api.util.generic.data.BiFunctor;
|
||||
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -17,15 +19,15 @@ import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
|
||||
public record Pair<L, R>(L left, R right) implements Bifunctor{
|
||||
public record Pair<L, R>(L left, R right) implements BiFunctor<L, R, Pair<?, ?>> {
|
||||
private static final Pair<?, ?> NULL = new Pair<>(null, null);
|
||||
|
||||
public static <L, R, T> Function<Pair<L, R>, Pair<T, R>> mapLeft(Function<L, T> function) {
|
||||
return pair -> of(function.apply(pair.left), pair.right);
|
||||
public <T> Pair<T, R> mapLeft(Function<L, T> function) {
|
||||
return of(function.apply(left), right);
|
||||
}
|
||||
|
||||
public static <L, R, T> Function<Pair<L, R>, Pair<L, T>> mapRight(Function<R, T> function) {
|
||||
return pair -> of(pair.left, function.apply(pair.right));
|
||||
public <T> Pair<L, T> mapRight(Function<R, T> function) {
|
||||
return of(left, function.apply(right));
|
||||
}
|
||||
|
||||
public static <L> Predicate<Pair<L, ?>> testLeft(Predicate<L> predicate) {
|
||||
@@ -6,13 +6,11 @@ import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||
import com.github.benmanes.caffeine.cache.Scheduler;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import com.dfsek.terra.api.Handle;
|
||||
import com.dfsek.terra.api.util.cache.SeededVector2Key;
|
||||
import com.dfsek.terra.api.util.cache.SeededVector3Key;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair.Mutable;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair.Mutable;
|
||||
import com.dfsek.terra.api.world.biome.Biome;
|
||||
|
||||
import static com.dfsek.terra.api.util.cache.CacheUtils.CACHE_EXECUTOR;
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import com.dfsek.terra.api.util.Column;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.mutable.MutableInteger;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@@ -64,7 +64,7 @@ import com.dfsek.terra.api.profiler.Profiler;
|
||||
import com.dfsek.terra.api.registry.CheckedRegistry;
|
||||
import com.dfsek.terra.api.registry.Registry;
|
||||
import com.dfsek.terra.api.registry.key.StringIdentifiable;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.mutable.MutableBoolean;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
import com.dfsek.terra.config.GenericLoaders;
|
||||
@@ -308,7 +308,7 @@ public abstract class AbstractPlatform implements Platform {
|
||||
.walk(addonsPath)
|
||||
.map(path -> Pair.of(path, data.relativize(path).toString()))
|
||||
|
||||
.map(Pair.mapRight(s -> {
|
||||
.map(p -> p.mapRight(s -> {
|
||||
if(s.contains("+")) { // remove commit hash
|
||||
return s.substring(0, s.lastIndexOf('+'));
|
||||
}
|
||||
@@ -316,17 +316,17 @@ public abstract class AbstractPlatform implements Platform {
|
||||
}))
|
||||
|
||||
.filter(Pair.testRight(s -> s.contains("."))) // remove patch version
|
||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||
|
||||
.filter(Pair.testRight(s -> s.contains("."))) // remove minor version
|
||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.'))))
|
||||
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<String> pathsNoMajor = paths
|
||||
.stream()
|
||||
.filter(Pair.testRight(s -> s.contains(".")))
|
||||
.map(Pair.mapRight(s -> s.substring(0, s.lastIndexOf('.')))) // remove major version
|
||||
.map(p -> p.mapRight(s -> s.substring(0, s.lastIndexOf('.')))) // remove major version
|
||||
.map(Pair.unwrapRight())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ import com.dfsek.terra.api.registry.OpenRegistry;
|
||||
import com.dfsek.terra.api.registry.Registry;
|
||||
import com.dfsek.terra.api.registry.key.RegistryKey;
|
||||
import com.dfsek.terra.api.tectonic.ShortcutLoader;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.reflection.ReflectionUtil;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
|
||||
@@ -34,7 +34,7 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import com.dfsek.terra.api.config.meta.Meta;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
public class MetaListLikePreprocessor extends MetaPreprocessor<Meta> {
|
||||
|
||||
@@ -33,7 +33,7 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import com.dfsek.terra.api.config.meta.Meta;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.dfsek.tectonic.api.preprocessor.ValuePreprocessor;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.util.Map;
|
||||
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
public abstract class MetaPreprocessor<A extends Annotation> implements ValuePreprocessor<A> {
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.lang.reflect.AnnotatedType;
|
||||
import java.util.Map;
|
||||
|
||||
import com.dfsek.terra.api.config.meta.Meta;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
|
||||
|
||||
public class MetaValuePreprocessor extends MetaPreprocessor<Meta> {
|
||||
|
||||
@@ -44,7 +44,7 @@ import java.util.stream.Collectors;
|
||||
import com.dfsek.terra.api.registry.OpenRegistry;
|
||||
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
||||
import com.dfsek.terra.api.registry.key.RegistryKey;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.dfsek.terra.api.block.state.BlockState;
|
||||
import com.dfsek.terra.api.config.ConfigPack;
|
||||
import com.dfsek.terra.api.entity.Entity;
|
||||
import com.dfsek.terra.api.entity.EntityType;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.world.ServerWorld;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||
|
||||
@@ -8,7 +8,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.world.ServerWorld;
|
||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||
import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.Locale;
|
||||
|
||||
import com.dfsek.terra.api.config.ConfigPack;
|
||||
import com.dfsek.terra.api.config.MetaPack;
|
||||
import com.dfsek.terra.api.util.generic.pair.Pair;
|
||||
import com.dfsek.terra.api.util.generic.data.types.Pair;
|
||||
import com.dfsek.terra.api.util.range.ConstantRange;
|
||||
import com.dfsek.terra.mod.ModPlatform;
|
||||
import com.dfsek.terra.mod.config.VanillaWorldProperties;
|
||||
|
||||
Reference in New Issue
Block a user