1using System.Text.RegularExpressions;
6 private static readonly Regex
_listSyntaxRegex =
new Regex(
"^(?<op>>=|<=|==|!=|--|\\+\\+|[><=+\\-*/x])?(?<number>.*)$", RegexOptions.Compiled);
8 public string Expression {
get; }
10 public string Op {
get; }
12 public string Rhs {
get; }
16 Expression = expression.Trim();
18 Op = match.Groups[
"op"].Value;
19 Rhs = match.Groups[
"number"].Value;
35 return expr.Expression;
40 if (Expression.IsEmpty())
44 if (!
$"{lhs} {Expression}".TryEvaluateAsCalc(out
int result, (
object)
null))
51 public float Calc(
float lhs)
53 if (Expression.IsEmpty())
57 if (!
$"{lhs} {Expression}".TryEvaluateAsCalc(out
float result, (
object)
null))
64 public float Diff(
float lhs)
69 public int Diff(
int lhs)
76 if (Expression.IsEmpty())
87 if (!
float.TryParse(Rhs, out var result))
116 if (Expression.IsEmpty())
127 if (!
int.TryParse(Rhs, out var result))
156 if (Expression.IsEmpty())
162 if (
float.TryParse(Rhs, out var result))
164 return Mathf.Approximately(lhs, result);
168 if (!
float.TryParse(Rhs, out var result2))
175 return lhs > result2;
177 return lhs < result2;
180 return Mathf.Approximately(lhs, result2);
182 return lhs >= result2;
184 return lhs <= result2;
186 return !Mathf.Approximately(lhs, result2);
194 if (Expression.IsEmpty())
200 if (
int.TryParse(Rhs, out var result))
202 return lhs == result;
206 if (!
int.TryParse(Rhs, out var result2))
213 return lhs > result2;
215 return lhs < result2;
218 return lhs == result2;
220 return lhs >= result2;
222 return lhs <= result2;
224 return lhs != result2;
float ModOrSet(float lhs)
static readonly Regex _listSyntaxRegex