call method

  1. @override
Future<String> call({
  1. required Agent agent,
  2. required Map<String, dynamic> arguments,
})
override

Implementation

@override
Future<String> call({
  required Agent agent,
  required Map<String, dynamic> arguments,
}) async {
  print("Expression! Args: $arguments");
  try {
    return const ExpressionEvaluator().eval(
      Expression.parse(arguments["expression"]),
      {
        "sin": sin,
        "pow": pow,
        "min": min,
        "max": max,
        "abs": (num a) => a.abs(),
        "sqrt": sqrt,
        "log": log,
        "exp": exp,
        "tan": tan,
        "cos": cos,
        "asin": asin,
        "acos": acos,
        "atan": atan,
        "atan2": atan2,
        "ceil": (num a) => a.ceil(),
        "floor": (num a) => a.floor(),
        "round": (num a) => a.round(),
        "deg2rad": (num a) => a * (pi / 180),
        "rad2deg": (num a) => a * (180 / pi),
        "lerp": (num a, num b, num f) => a + (b - a) * f,
        "pi": pi,
        "e": e,
        "ln10": ln10,
        "ln2": ln2,
        "log2e": log2e,
      },
    ).toString();
  } catch (e) {
    return "EXPRESSION ERROR: $e";
  }
}