encodeGroupConditionOperator method

FutureOr<EncodingContext> encodeGroupConditionOperator(
  1. GroupCondition c,
  2. EncodingContext context,
  3. String operator
)

Implementation

FutureOr<EncodingContext> encodeGroupConditionOperator(
    GroupCondition c, EncodingContext context, String operator) {
  var conditions = c.conditions;
  var length = conditions.length;

  if (length == 0) {
    return context;
  }

  if (length == 1) {
    var c1 = conditions.first;
    return encodeCondition(c1, context);
  }

  context.write(groupOpener);

  var c1 = conditions.first;
  var c1Ret = encodeCondition(c1, context);

  return c1Ret.resolveMapped((s) {
    var rets = conditions.skip(1).map((c2) {
      s.write(operator);
      return encodeCondition(c2, context);
    }).toList(growable: false);

    return rets
        .resolveAllReduced((value, element) => element)
        .resolveMapped((s) {
      s.write(groupCloser);
      return s;
    });
  });
}