Skip to content

Commit 42c22df

Browse files
authored
Fix function parameter stringification (SkriptLang#8344)
* fix toString of function parameters * Add optional, ranged
1 parent 6b7f547 commit 42c22df

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

src/main/java/org/skriptlang/skript/common/function/DefaultFunctionImpl.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.skriptlang.skript.common.function;
22

3+
import ch.njol.skript.classes.ClassInfo;
34
import ch.njol.skript.lang.function.FunctionEvent;
45
import ch.njol.skript.lang.function.Signature;
6+
import ch.njol.skript.localization.Noun;
7+
import ch.njol.skript.registrations.Classes;
58
import com.google.common.base.Preconditions;
69
import org.jetbrains.annotations.NotNull;
710
import org.jetbrains.annotations.Nullable;
@@ -305,6 +308,33 @@ record DefaultParameter<T>(String name, Class<T> type, Set<Modifier> modifiers)
305308
this(name, type, Set.of(modifiers));
306309
}
307310

311+
@Override
312+
public @NotNull String toString() {
313+
StringJoiner joiner = new StringJoiner(" ");
314+
315+
joiner.add("%s:".formatted(name));
316+
317+
if (hasModifier(Modifier.OPTIONAL)) {
318+
joiner.add("optional");
319+
}
320+
321+
Noun exact = Classes.getSuperClassInfo(type).getName();
322+
if (type.isArray()) {
323+
joiner.add(exact.getPlural());
324+
} else {
325+
joiner.add(exact.getSingular());
326+
}
327+
328+
if (hasModifier(Modifier.RANGED)) {
329+
RangedModifier<?> range = getModifier(RangedModifier.class);
330+
joiner.add("between")
331+
.add(range.getMin().toString())
332+
.add("and")
333+
.add(range.getMax().toString());
334+
}
335+
336+
return joiner.toString();
337+
}
308338
}
309339

310340
}

0 commit comments

Comments
 (0)