removeStrings method
Removes all string literals from the given code
.
Implementation
String removeStrings(String code) {
final buffer = StringBuffer();
bool inSingleQuote = false;
bool inDoubleQuote = false;
bool inMultiLineStringSingle = false;
bool inMultiLineStringDouble = false;
for (int i = 0; i < code.length; i++) {
final currentChar = code[i];
if (currentChar == "'" && !inDoubleQuote && !inMultiLineStringDouble) {
if (i + 2 < code.length && code.substring(i, i + 3) == "'''") {
inMultiLineStringSingle = !inMultiLineStringSingle;
i += 2;
continue;
} else if (!inMultiLineStringSingle) {
inSingleQuote = !inSingleQuote;
continue;
}
}
if (currentChar == '"' && !inSingleQuote && !inMultiLineStringSingle) {
if (i + 2 < code.length && code.substring(i, i + 3) == '"""') {
inMultiLineStringDouble = !inMultiLineStringDouble;
i += 2;
continue;
} else if (!inMultiLineStringDouble) {
inDoubleQuote = !inDoubleQuote;
continue;
}
}
if (inSingleQuote ||
inDoubleQuote ||
inMultiLineStringSingle ||
inMultiLineStringDouble) {
continue;
}
buffer.write(currentChar);
}
return buffer.toString();
}