104 lines
3.0 KiB
Java
104 lines
3.0 KiB
Java
package io.izzel.taboolib.origin.cronus.util;
|
|
|
|
import io.izzel.taboolib.module.logger.TLogger;
|
|
import io.izzel.taboolib.module.locale.TLocale;
|
|
import io.izzel.taboolib.module.inject.TInject;
|
|
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
/**
|
|
* @Author 坏黑
|
|
* @Since 2019-06-07 23:51
|
|
*/
|
|
public class StringExpression {
|
|
|
|
@TInject
|
|
private static TLogger logger;
|
|
private static Pattern pattern = Pattern.compile("(?<symbol>>|>=|<|<=|==|=|!=|≈≈|≈|!≈)[ ]?(?<number>.+)");
|
|
private String symbol;
|
|
private StringNumber number;
|
|
|
|
public StringExpression(Object in) {
|
|
Matcher matcher = pattern.matcher(String.valueOf(in));
|
|
if (!matcher.find()) {
|
|
logger.error("StringExpression \"" + in + "\" parsing failed.");
|
|
return;
|
|
}
|
|
symbol = matcher.group("symbol");
|
|
number = new StringNumber(matcher.group("number"));
|
|
}
|
|
|
|
public boolean isSelect(String string) {
|
|
switch (symbol) {
|
|
case "=":
|
|
case "==":
|
|
return number.getSource().equals(string);
|
|
case "!=":
|
|
return !number.getSource().equals(string);
|
|
case "≈":
|
|
case "≈≈":
|
|
return number.getSource().equalsIgnoreCase(string);
|
|
case "!≈":
|
|
return !number.getSource().equalsIgnoreCase(string);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean isSelect(double number) {
|
|
if (!this.number.isNumber()) {
|
|
return false;
|
|
}
|
|
double v = this.number.getNumber().doubleValue();
|
|
switch (symbol) {
|
|
case ">":
|
|
return number > v;
|
|
case ">=":
|
|
return number >= v;
|
|
case "<":
|
|
return number < v;
|
|
case "<=":
|
|
return number <= v;
|
|
case "=":
|
|
case "==":
|
|
return number == v;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public String translate() {
|
|
switch (symbol) {
|
|
case ">":
|
|
return TLocale.asString("translate-expression-0") + " " + number.getSource();
|
|
case ">=":
|
|
return TLocale.asString("translate-expression-1") + " " + number.getSource();
|
|
case "<":
|
|
return TLocale.asString("translate-expression-2") + " " + number.getSource();
|
|
case "<=":
|
|
return TLocale.asString("translate-expression-3") + " " + number.getSource();
|
|
case "=":
|
|
case "==":
|
|
return TLocale.asString("translate-expression-4") + " " + number.getSource();
|
|
}
|
|
return symbol + " " + number.getSource();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "StringExpression{" +
|
|
"symbol='" + symbol + '\'' +
|
|
", number=" + number +
|
|
'}';
|
|
}
|
|
|
|
public String getSymbol() {
|
|
return symbol;
|
|
}
|
|
|
|
public StringNumber getNumber() {
|
|
return number;
|
|
}
|
|
}
|