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;
    });
  });
}