Skip to content

Commit 55d166b

Browse files
authored
Merge pull request #16 from SkriptDev/dev/patch
Dev/patch
2 parents 4bd2350 + c9073c1 commit 55d166b

8 files changed

Lines changed: 43 additions & 22 deletions

File tree

src/main/java/io/github/syst3ms/skriptparser/expressions/CondExprCompare.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public class CondExprCompare extends ConditionalExpression {
5959
"if {_string} is not equal to {_string2}:",
6060
"if 1 = 1:")
6161
.since("1.0.0")
62+
.setPriority(0)
6263
.register();
6364
}
6465

src/main/java/io/github/syst3ms/skriptparser/expressions/CondExprContains.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public class CondExprContains extends ConditionalExpression {
3030
"%string% [1:does(n't| not)] contain[s] %string%",
3131
"%objects% [1:do[es](n't| not)] contain[s] %objects%"
3232
)
33-
.setPriority(2)
3433
.name("Contains")
3534
.description("Checks if a given list of objects contain a given element. You can also check if a string contains another string.")
3635
.examples("if {_string} contains \"hello\":",

src/main/java/io/github/syst3ms/skriptparser/lang/entries/ExpressionLoader.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
import io.github.syst3ms.skriptparser.file.FileElement;
44
import io.github.syst3ms.skriptparser.lang.Expression;
55
import io.github.syst3ms.skriptparser.lang.Variable;
6-
import io.github.syst3ms.skriptparser.lang.base.ConvertedExpression;
76
import io.github.syst3ms.skriptparser.log.ErrorType;
87
import io.github.syst3ms.skriptparser.log.SkriptLogger;
98
import io.github.syst3ms.skriptparser.parsing.ParserState;
109
import io.github.syst3ms.skriptparser.parsing.SyntaxParser;
1110
import io.github.syst3ms.skriptparser.types.PatternType;
12-
import io.github.syst3ms.skriptparser.types.conversions.Converters;
1311

1412
import java.util.Optional;
15-
import java.util.function.Function;
1613

1714
public class ExpressionLoader<T> extends OptionLoader {
1815

@@ -60,20 +57,8 @@ public boolean loadEntry(SectionConfiguration config, FileElement element, Parse
6057
}
6158

6259
Expression<?> expression = exprOptional.get();
63-
if (Variable.class.isAssignableFrom(expression.getClass())) {
64-
Class<?> returnType = expression.getReturnType();
65-
66-
if (!this.typeClass.isAssignableFrom(returnType)) {
67-
Optional<? extends Function<?, Optional<? extends T>>> converter = Converters.getConverter(returnType, this.typeClass);
68-
if (converter.isPresent()) {
69-
ConvertedExpression<?, T> tConvertedExpression = ConvertedExpression.newInstance(expression, this.typeClass, converter.get());
70-
config.getData().put(this.key, tConvertedExpression);
71-
return true;
72-
}
73-
74-
logger.error("Expression '" + s + "' does not return a " + typeClass.getSimpleName() + " found: " + expression.getReturnType().getSimpleName(), ErrorType.SEMANTIC_ERROR);
75-
return false;
76-
}
60+
if (expression instanceof Variable<?> var) {
61+
var.setReturnType(this.typeClass);
7762
}
7863

7964
config.getData().put(this.key, expression);

src/main/java/io/github/syst3ms/skriptparser/lang/entries/SectionConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public <T> Optional<T> getValue(String key, Class<T> cls) {
152152
public <T> Optional<Expression<T>> getExpression(String key, Class<T> cls) {
153153
Object o = this.data.get(key);
154154
if (o instanceof Expression<?> expression && cls.isAssignableFrom(expression.getReturnType())) {
155-
return (Optional<Expression<T>>) Optional.of((T) expression);
155+
return Optional.of((Expression<T>) expression);
156156
}
157157
return Optional.empty();
158158
}

src/main/java/io/github/syst3ms/skriptparser/registration/DefaultRegistration.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,25 @@ public String deserialize(Gson gson, JsonElement element) {
251251
return gson.fromJson(element, String.class);
252252
}
253253
})
254+
.arithmetic(new Arithmetic<String, String>() {
255+
@Override
256+
public String difference(String first, String second) {
257+
return first.substring(second.length());
258+
}
259+
@Override
260+
public String add(String value, String difference) {
261+
return value + difference;
262+
}
263+
@Override
264+
public String subtract(String value, String difference) {
265+
return value.substring(0, value.length() - difference.length());
266+
}
267+
268+
@Override
269+
public Class<? extends String> getRelativeType() {
270+
return String.class;
271+
}
272+
})
254273
.register();
255274

256275
registration.newType(Boolean.class, "boolean", "boolean@s")

src/main/java/io/github/syst3ms/skriptparser/registration/SkriptRegistration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ public abstract class SyntaxRegistrar<C extends SyntaxElement> implements Regist
953953
protected final List<String> patterns = new ArrayList<>();
954954
protected final Map<String, Object> data = new HashMap<>();
955955
protected Documentation documentation = new Documentation();
956-
protected int priority;
956+
protected int priority = 5;
957957

958958
SyntaxRegistrar(Class<C> c, String... patterns) {
959959
this.c = c;

src/main/java/io/github/syst3ms/skriptparser/structures/functions/StructFunction.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,26 @@ public class StructFunction extends Structure {
1717
static {
1818
Parser.getMainRegistration()
1919
.newStructure(StructFunction.class, "*[:local[ ]] func[tion] <" + Functions.FUNCTION_NAME_REGEX + ">" +
20-
"\\([params:%*functionparameters%]\\)[return: \\:\\: <.+>]")
20+
"\\([params:%*functionparameters%]\\)[return: (\\:\\:|returns|-\\>) <.+>]")
2121
.setHandledContexts(FunctionContext.class)
2222
.name("Function")
23-
.description("Creates a function that can be called from other scripts.")
23+
.description("Creates a function that can be called from other scripts.",
24+
"`local` indicates a function that can only be called from the same script.")
2425
.since("1.0.0")
26+
.examples("function getName(p: player) :: string:",
27+
"\treturn name of {_p}",
28+
"",
29+
"function getLocation(e: entity) returns location:",
30+
"\treturn location of {_e}",
31+
"",
32+
"function getWorld(e: entity) -> world:",
33+
"\treturn world of {_e}",
34+
"",
35+
"function spawn(p: players):",
36+
"\tteleport {_p::*} to {spawn}",
37+
"",
38+
"function broadcast(m: string, p: players):",
39+
"\tsend {_m} to {_p::*}")
2540
.register();
2641
}
2742

src/main/java/io/github/syst3ms/skriptparser/util/color/Color.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.syst3ms.skriptparser.util.color;
22

3+
import java.util.Locale;
34
import java.util.Map;
45
import java.util.Optional;
56
import java.util.regex.Pattern;
@@ -116,6 +117,7 @@ public static Color of(long hex, boolean isAlpha) {
116117
* @see #COLOR_PATTERN
117118
*/
118119
public static Optional<Color> ofHex(String hex) {
120+
hex = hex.toLowerCase(Locale.ROOT);
119121
if (!hex.matches(COLOR_PATTERN.pattern()))
120122
return Optional.empty();
121123

0 commit comments

Comments
 (0)