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