call method

String call(
  1. String query
)

call compress a query, eliminating unwanted characters

Implementation

String call(String query) {
  final output = <int>[];
  _CharType lastReadChar = _CharType.space;

  bool isInsideAString = false;
  bool isInsideAComment = false;

  for (final code in query.runes) {
    if (isInsideAString) {
      if (code == _stringCharCode) {
        isInsideAString = false;
      }
      output.add(code);
      continue;
    }
    if (code == _stringCharCode) {
      isInsideAString = true;
      output.add(code);
      continue;
    }
    if (isInsideAComment) {
      if (code == _newLineCharCode) {
        isInsideAComment = false;
      }
      continue;
    }
    if (code == _commentCharCode) {
      isInsideAComment = true;
      continue;
    }

    if (!_isLetter(code) && lastReadChar == _CharType.letter) {
      lastReadChar = _CharType.endOfWord;
    }

    if (_isWhiteSpace(code)) {
      continue;
    }
    if (_isSymbolThatDoesNotNeedSpace(code)) {
      output.add(code);
      lastReadChar = _CharType.symbolThatDoesNotNeedSpace;
      continue;
    }
    if (_isLetter(code)) {
      if (lastReadChar == _CharType.endOfWord) {
        output.add(_spaceCharCode);
      }
      output.add(code);
      lastReadChar = _CharType.letter;
      continue;
    }
  }

  return String.fromCharCodes(output);
}