Skip to content
This repository was archived by the owner on Nov 29, 2025. It is now read-only.

Commit b06033b

Browse files
committed
Add strFormat and move math.
1 parent ecfddac commit b06033b

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

src/main/java/me/melontini/commander/impl/expression/EvalUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import me.melontini.commander.impl.expression.extensions.ReflectiveValueConverter;
1919
import me.melontini.commander.impl.expression.functions.*;
2020
import me.melontini.commander.impl.expression.functions.arrays.*;
21+
import me.melontini.commander.impl.expression.functions.math.ClampFunction;
22+
import me.melontini.commander.impl.expression.functions.math.LerpFunction;
23+
import me.melontini.commander.impl.expression.functions.math.RangedRandomFunction;
2124
import me.melontini.commander.impl.mixin.evalex.EvaluationValueAccessor;
2225
import me.melontini.commander.impl.mixin.evalex.ExpressionAccessor;
2326
import me.melontini.commander.impl.mixin.evalex.ExpressionConfigurationAccessor;
@@ -64,6 +67,8 @@ public class EvalUtils {
6467
functions.put("arrayNoneMatch", new ArrayNoneMatch());
6568
functions.put("arrayAllMatch", new ArrayAllMatch());
6669

70+
functions.put("strFormat", new StringFormatFunction());
71+
6772
functions.put("structContainsKey", new StructContainsKeyFunction());
6873
functions.put("hasContext", new HasContextFunction());
6974
builder.functionDictionary(SimpleFunctionDictionary.ofFunctions(functions));
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package me.melontini.commander.impl.expression.functions;
2+
3+
import com.ezylang.evalex.EvaluationException;
4+
import com.ezylang.evalex.Expression;
5+
import com.ezylang.evalex.data.EvaluationValue;
6+
import com.ezylang.evalex.functions.AbstractFunction;
7+
import com.ezylang.evalex.functions.FunctionParameter;
8+
import com.ezylang.evalex.parser.Token;
9+
10+
import java.util.Arrays;
11+
12+
@FunctionParameter(name = "pattern")
13+
@FunctionParameter(name = "args", isVarArg = true)
14+
public class StringFormatFunction extends AbstractFunction {
15+
@Override
16+
public EvaluationValue evaluate(Expression expression, Token functionToken, EvaluationValue... par) throws EvaluationException {
17+
if (par.length == 1) return EvaluationValue.stringValue(String.format(par[0].getStringValue()));
18+
return EvaluationValue.stringValue(String.format(par[0].getStringValue(), Arrays.stream(Arrays.copyOfRange(par, 1, par.length)).map(EvaluationValue::getValue).toArray()));
19+
}
20+
}

src/main/java/me/melontini/commander/impl/expression/functions/ClampFunction.java renamed to src/main/java/me/melontini/commander/impl/expression/functions/math/ClampFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package me.melontini.commander.impl.expression.functions;
1+
package me.melontini.commander.impl.expression.functions.math;
22

33
import com.ezylang.evalex.EvaluationException;
44
import com.ezylang.evalex.Expression;

src/main/java/me/melontini/commander/impl/expression/functions/LerpFunction.java renamed to src/main/java/me/melontini/commander/impl/expression/functions/math/LerpFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package me.melontini.commander.impl.expression.functions;
1+
package me.melontini.commander.impl.expression.functions.math;
22

33
import com.ezylang.evalex.EvaluationException;
44
import com.ezylang.evalex.Expression;

src/main/java/me/melontini/commander/impl/expression/functions/RangedRandomFunction.java renamed to src/main/java/me/melontini/commander/impl/expression/functions/math/RangedRandomFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package me.melontini.commander.impl.expression.functions;
1+
package me.melontini.commander.impl.expression.functions.math;
22

33
import com.ezylang.evalex.EvaluationException;
44
import com.ezylang.evalex.Expression;

0 commit comments

Comments
 (0)