mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-10-26 05:50:08 +00:00
switch terrascript items to use context
This commit is contained in:
1 parent
fb505fe28b
commit
373f6a5fe3
36 files changed
+119
-119
No files matched your search
+4
-3
@@ -4,6 +4,7 @@ import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Item;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -23,14 +24,14 @@ public class Block implements Item<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
public ReturnInfo<?> apply(ImplementationArguments implementationArguments) {
|
||||
return apply(implementationArguments, new HashMap<>());
|
||||
return apply(, implementationArguments, new HashMap<>());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
Map<String, Variable<?>> scope = new HashMap<>(variableMap);
|
||||
for(Item<?> item : items) {
|
||||
Object result = item.apply(implementationArguments, scope);
|
||||
Object result = item.apply(, implementationArguments, scope);
|
||||
if(result instanceof ReturnInfo) {
|
||||
ReturnInfo<?> level = (ReturnInfo<?>) result;
|
||||
if(!level.getLevel().equals(ReturnLevel.NONE)) return level;
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class BreakKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return new Block.ReturnInfo<>(Block.ReturnLevel.BREAK, null);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class ContinueKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return new Block.ReturnInfo<>(Block.ReturnLevel.CONTINUE, null);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class FailKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return new Block.ReturnInfo<>(Block.ReturnLevel.FAIL, null);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -16,7 +16,7 @@ public class ReturnKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return new Block.ReturnInfo<>(Block.ReturnLevel.RETURN, null);
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Item;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -26,9 +26,9 @@ public class ForKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
for(initializer.apply(implementationArguments, variableMap); statement.apply(implementationArguments, variableMap); incrementer.apply(implementationArguments, variableMap)) {
|
||||
Block.ReturnInfo<?> level = conditional.apply(implementationArguments, variableMap);
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
for(initializer.apply(, implementationArguments, variableMap); statement.apply(, implementationArguments, variableMap); incrementer.apply(, implementationArguments, variableMap)) {
|
||||
Block.ReturnInfo<?> level = conditional.apply(, implementationArguments, variableMap);
|
||||
if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break;
|
||||
if(level.getLevel().isReturnFast()) return level;
|
||||
}
|
||||
|
||||
+6
-6
@@ -1,11 +1,11 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
@@ -27,15 +27,15 @@ public class IfKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
if(statement.apply(implementationArguments, variableMap)) return conditional.apply(implementationArguments, variableMap);
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
if(statement.apply(, implementationArguments, variableMap)) return conditional.apply(, implementationArguments, variableMap);
|
||||
else {
|
||||
for(Pair<Returnable<Boolean>, Block> pair : elseIf) {
|
||||
if(pair.getLeft().apply(implementationArguments, variableMap)) {
|
||||
return pair.getRight().apply(implementationArguments, variableMap);
|
||||
if(pair.getLeft().apply(, implementationArguments, variableMap)) {
|
||||
return pair.getRight().apply(, implementationArguments, variableMap);
|
||||
}
|
||||
}
|
||||
if(elseBlock != null) return elseBlock.apply(implementationArguments, variableMap);
|
||||
if(elseBlock != null) return elseBlock.apply(, implementationArguments, variableMap);
|
||||
}
|
||||
return new Block.ReturnInfo<>(Block.ReturnLevel.NONE, null);
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,11 +1,11 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Keyword;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -21,9 +21,9 @@ public class WhileKeyword implements Keyword<Block.ReturnInfo<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block.ReturnInfo<?> apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
while(statement.apply(implementationArguments, variableMap)) {
|
||||
Block.ReturnInfo<?> level = conditional.apply(implementationArguments, variableMap);
|
||||
public Block.ReturnInfo<?> apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
while(statement.apply(, implementationArguments, variableMap)) {
|
||||
Block.ReturnInfo<?> level = conditional.apply(, implementationArguments, variableMap);
|
||||
if(level.getLevel().equals(Block.ReturnLevel.BREAK)) break;
|
||||
if(level.getLevel().isReturnFast()) return level;
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -26,7 +26,7 @@ public abstract class BinaryOperation<I, O> implements Returnable<O> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public O apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
return apply(left.apply(implementationArguments, variableMap), right.apply(implementationArguments, variableMap));
|
||||
public O apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return apply(left.apply(, implementationArguments, variableMap), right.apply(, implementationArguments, variableMap));
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,9 +1,9 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.operations;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -19,8 +19,8 @@ public abstract class UnaryOperation<T> implements Returnable<T> {
|
||||
public abstract T apply(T input);
|
||||
|
||||
@Override
|
||||
public T apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
return apply(input.apply(implementationArguments, variableMap));
|
||||
public T apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return apply(input.apply(, implementationArguments, variableMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.variables;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Item;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -21,8 +21,8 @@ public class Assignment<T> implements Item<T> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public synchronized T apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
T val = value.apply(implementationArguments, variableMap);
|
||||
public synchronized T apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
T val = value.apply(, implementationArguments, variableMap);
|
||||
((Variable<T>) variableMap.get(identifier)).setValue(val);
|
||||
return val;
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.variables;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Item;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -30,8 +30,8 @@ public class Declaration<T> implements Item<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public T apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
T result = value.apply(implementationArguments, variableMap);
|
||||
public T apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
T result = value.apply(, implementationArguments, variableMap);
|
||||
switch(type) {
|
||||
case NUMBER:
|
||||
variableMap.put(identifier, new NumberVariable((Number) result, position));
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package com.dfsek.terra.addons.terrascript.parser.lang.variables;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -24,7 +24,7 @@ public class Getter implements Returnable<Object> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized Object apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
public synchronized Object apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
return variableMap.get(identifier).getValue();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@ package structure;
|
||||
|
||||
import com.dfsek.terra.addons.terrascript.api.Function;
|
||||
import com.dfsek.terra.addons.terrascript.api.FunctionBuilder;
|
||||
import com.dfsek.terra.addons.terrascript.api.ImplementationArguments;
|
||||
import com.dfsek.terra.addons.terrascript.api.Position;
|
||||
import com.dfsek.terra.addons.terrascript.api.exception.ParseException;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Returnable;
|
||||
import com.dfsek.terra.addons.terrascript.api.lang.Variable;
|
||||
import com.dfsek.terra.addons.terrascript.parser.Parser;
|
||||
import com.dfsek.terra.addons.terrascript.parser.lang.Block;
|
||||
import com.dfsek.terra.api.properties.Context;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -54,9 +54,9 @@ public class ParserTest {
|
||||
long t = System.nanoTime() - l;
|
||||
System.out.println("Took " + (double) t / 1000000);
|
||||
|
||||
block.apply(null, new HashMap<>());
|
||||
block.apply(, null, new HashMap<>());
|
||||
|
||||
block.apply(null, new HashMap<>());
|
||||
block.apply(, null, new HashMap<>());
|
||||
}
|
||||
|
||||
private static class Test1 implements Function<Void> {
|
||||
@@ -71,8 +71,8 @@ public class ParserTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void apply(ImplementationArguments implementationArguments, Map<String, Variable<?>> variableMap) {
|
||||
System.out.println("string: " + a.apply(implementationArguments, variableMap) + ", double: " + b.apply(implementationArguments, variableMap));
|
||||
public Void apply(Context context, Map<String, Variable<?>> variableMap) {
|
||||
System.out.println("string: " + a.apply(, implementationArguments, variableMap) + ", double: " + b.apply(, implementationArguments, variableMap));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user