Change the Python codegen for string quoting to match the behaviour of repr on a string in CPython.

This commit is contained in:
Tim Dawborn
2016-12-22 15:51:23 +11:00
parent 6aee3ed2da
commit 48e58859fe

View File

@@ -193,9 +193,18 @@ Blockly.Python.quote_ = function(string) {
// Can't use goog.string.quote since % must also be escaped.
string = string.replace(/\\/g, '\\\\')
.replace(/\n/g, '\\\n')
.replace(/\%/g, '\\%')
.replace(/'/g, '\\\'');
return '\'' + string + '\'';
.replace(/\%/g, '\\%');
// Follow the CPython behaviour of repr() for a non-byte string.
var quote = '\'';
if (string.indexOf('\'') !== -1) {
if (string.indexOf('"') === -1) {
quote = '"';
} else {
string = string.replace(/'/g, '\\\'');
}
};
return quote + string + quote;
};
/**