evaluateEval method

EvaluateExprOutput evaluateEval(
  1. EvaluateExprInput input
)

Implementation

EvaluateExprOutput evaluateEval(EvaluateExprInput input) {
  final path = input.path;
  var st = input.defs;
  final where = input.expr.obj["where"];
  if (where != null) {
    final path = pathAppendKey(input.path, "where");
    for (final (pos, w) in where.arr.indexed) {
      final def = w.obj["def"]!;
      final value = w.obj["value"]!;
      final funDef = FunDef(
          def: def.str, value: value, path: pathAppendIndex(path, pos));
      final with_ = w.obj["with"];
      if (with_ != null) {
        for (final w in with_.arr) {
          funDef.with_3.add(w.str);
        }
      }
      st = funDefListRegister(st, funDef);
    }
  }
  return evaluateExpr(EvaluateExprInput(
      path: pathAppendKey(path, "eval"),
      defs: st,
      expr: input.expr.obj["eval"]));
}