trim method

  1. @override
(IfElseStatement?, int) trim(
  1. int remaining
)
override

Implementation

@override
(IfElseStatement?, int) trim(int remaining) {
  if (remaining <= 0) {
    return (null, 0);
  } else {
    final trimmedIfThenStatementBlockResult = ifThenStatementBlock.trim(
      remaining,
    );
    remaining = trimmedIfThenStatementBlockResult.$2;
    List<(DartBlockBooleanExpression, StatementBlock)>
    trimmedElseIfStatementBlocks = [];
    StatementBlock trimmedElseStatementBlock;

    if (remaining > 0) {
      for (final elseIfStatementBlock in elseIfStatementBlocks) {
        final trimmedElseIfStatementBlockResult = elseIfStatementBlock.$2
            .trim(remaining);
        remaining = trimmedElseIfStatementBlockResult.$2;
        if (trimmedElseIfStatementBlockResult.$1 != null) {
          trimmedElseIfStatementBlocks.add((
            elseIfStatementBlock.$1,
            trimmedElseIfStatementBlockResult.$1!,
          ));
        }
        if (remaining <= 0) {
          break;
        }
      }
    }
    if (remaining > 0) {
      final trimmedElseStatementBlockResult = elseStatementBlock.trim(
        remaining,
      );
      remaining = trimmedElseStatementBlockResult.$2;
      if (trimmedElseStatementBlockResult.$1 != null) {
        trimmedElseStatementBlock = trimmedElseStatementBlockResult.$1!;
      } else {
        trimmedElseStatementBlock = StatementBlock.init(
          statements: [],
          isIsolated: elseStatementBlock.isIsolated,
        );
      }
    } else {
      trimmedElseStatementBlock = StatementBlock.init(
        statements: [],
        isIsolated: elseStatementBlock.isIsolated,
      );
    }

    return (
      IfElseStatement.init(
        ifCondition,
        trimmedIfThenStatementBlockResult.$1 ??
            StatementBlock.init(
              statements: [],
              isIsolated: ifThenStatementBlock.isIsolated,
            ),
        trimmedElseIfStatementBlocks,
        trimmedElseStatementBlock,
      ),
      remaining,
    );
  }
}