str.format: Don't assume that '}' immediately follows '{', skip insides.
That at least makes stuff like "{:x}".format(1) to produce not completely broken output.
This commit is contained in:
parent
b99d9ea258
commit
f2b796e7c7
|
@ -270,7 +270,8 @@ mp_obj_t str_format(int n_args, const mp_obj_t *args) {
|
||||||
str++;
|
str++;
|
||||||
if (*str == '{') {
|
if (*str == '{') {
|
||||||
vstr_add_char(vstr, '{');
|
vstr_add_char(vstr, '{');
|
||||||
} else if (*str == '}') {
|
} else {
|
||||||
|
while (*str != '}') str++;
|
||||||
if (arg_i >= n_args) {
|
if (arg_i >= n_args) {
|
||||||
nlr_jump(mp_obj_new_exception_msg(MP_QSTR_IndexError, "tuple index out of range"));
|
nlr_jump(mp_obj_new_exception_msg(MP_QSTR_IndexError, "tuple index out of range"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
print("{}-{}".format(1, [4, 5]))
|
||||||
|
print("{0}-{1}".format(1, [4, 5]))
|
||||||
|
print("{:x}".format(1))
|
||||||
|
print("{!r}".format(2))
|
||||||
|
# TODO
|
||||||
|
#print("{1}-{0}".format(1, [4, 5]))
|
||||||
|
#print("{:x}".format(0x10))
|
||||||
|
#print("{!r}".format("foo"))
|
Loading…
Reference in New Issue