forked from firka/flutter
enable unnecessary_string_escapes and use_raw_strings (#68302)
This commit is contained in:
committed by
GitHub
parent
a4ac7cce82
commit
ae06c19a37
@@ -390,6 +390,19 @@ class $classNamePrefix$camelCaseName extends $superClass {''';
|
||||
/// foo$bar = 'foo\$bar'
|
||||
/// ```
|
||||
String generateString(String value) {
|
||||
if (<String>['\n', '\f', '\t', '\r', '\b'].every((String pattern) => !value.contains(pattern))) {
|
||||
final bool hasDollar = value.contains(r'$');
|
||||
final bool hasBackslash = value.contains(r'\');
|
||||
final bool hasQuote = value.contains("'");
|
||||
final bool hasDoubleQuote = value.contains('"');
|
||||
if (!hasQuote) {
|
||||
return hasBackslash || hasDollar ? "r'$value'" : "'$value'";
|
||||
}
|
||||
if (!hasDoubleQuote) {
|
||||
return hasBackslash || hasDollar ? 'r"$value"' : '"$value"';
|
||||
}
|
||||
}
|
||||
|
||||
const String backslash = '__BACKSLASH__';
|
||||
assert(
|
||||
!value.contains(backslash),
|
||||
@@ -401,17 +414,17 @@ String generateString(String value) {
|
||||
value = value
|
||||
// Replace backslashes with a placeholder for now to properly parse
|
||||
// other special characters.
|
||||
.replaceAll('\\', backslash)
|
||||
.replaceAll('\$', '\\\$')
|
||||
.replaceAll("'", "\\'")
|
||||
.replaceAll('"', '\\"')
|
||||
.replaceAll('\n', '\\n')
|
||||
.replaceAll('\f', '\\f')
|
||||
.replaceAll('\t', '\\t')
|
||||
.replaceAll('\r', '\\r')
|
||||
.replaceAll('\b', '\\b')
|
||||
.replaceAll(r'\', backslash)
|
||||
.replaceAll(r'$', r'\$')
|
||||
.replaceAll("'", r"\'")
|
||||
.replaceAll('"', r'\"')
|
||||
.replaceAll('\n', r'\n')
|
||||
.replaceAll('\f', r'\f')
|
||||
.replaceAll('\t', r'\t')
|
||||
.replaceAll('\r', r'\r')
|
||||
.replaceAll('\b', r'\b')
|
||||
// Reintroduce escaped backslashes into generated Dart string.
|
||||
.replaceAll(backslash, '\\\\');
|
||||
.replaceAll(backslash, r'\\');
|
||||
|
||||
return "'$value'";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user