Added NumberUtils.evaluateExpressionOrNull

This commit is contained in:
Auxilor
2023-06-03 15:13:42 +01:00
parent 0ce3d294d1
commit 74aeaec257
6 changed files with 52 additions and 28 deletions

View File

@@ -527,9 +527,10 @@ public interface Eco {
*
* @param expression The expression.
* @param context The context.
* @return The value of the expression, or zero if invalid.
* @return The value of the expression, or null if invalid.
*/
double evaluate(@NotNull String expression,
@Nullable
Double evaluate(@NotNull String expression,
@NotNull PlaceholderContext context);
/**

View File

@@ -12,6 +12,7 @@ import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;
import java.util.concurrent.ThreadLocalRandom;
@@ -251,12 +252,15 @@ public final class NumberUtils {
@Nullable final Player player,
@Nullable final PlaceholderInjectable context,
@NotNull final Collection<AdditionalPlayer> additionalPlayers) {
return Eco.get().evaluate(expression, new PlaceholderContext(
player,
null,
context,
additionalPlayers
));
return evaluateExpression(
expression,
new PlaceholderContext(
player,
null,
context,
additionalPlayers
)
);
}
/**
@@ -283,6 +287,22 @@ public final class NumberUtils {
*/
public static double evaluateExpression(@NotNull final String expression,
@NotNull final PlaceholderContext context) {
return Objects.requireNonNullElse(
evaluateExpressionOrNull(expression, context),
0.0
);
}
/**
* Evaluate an expression in a context.
*
* @param expression The expression.
* @param context The context.
* @return The value of the expression, or zero if invalid.
*/
@Nullable
public static Double evaluateExpressionOrNull(@NotNull final String expression,
@NotNull final PlaceholderContext context) {
return Eco.get().evaluate(expression, context);
}

View File

@@ -31,3 +31,7 @@ fun evaluateExpression(expression: String) =
/** @see NumberUtils.evaluateExpression */
fun evaluateExpression(expression: String, context: PlaceholderContext) =
NumberUtils.evaluateExpression(expression, context)
/** @see NumberUtils.evaluateExpressionOrNull */
fun evaluateExpressionOrNull(expression: String, context: PlaceholderContext) =
NumberUtils.evaluateExpressionOrNull(expression, context)