Skip to content
Snippets Groups Projects
Commit b2d4fc06 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

objstr: Make *strip() accept bytes.

parent ce6c1017
Branches
No related tags found
No related merge requests found
...@@ -540,7 +540,8 @@ enum { LSTRIP, RSTRIP, STRIP }; ...@@ -540,7 +540,8 @@ enum { LSTRIP, RSTRIP, STRIP };
STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) { STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
assert(1 <= n_args && n_args <= 2); assert(1 <= n_args && n_args <= 2);
assert(MP_OBJ_IS_STR(args[0])); assert(is_str_or_bytes(args[0]));
const mp_obj_type_t *self_type = mp_obj_get_type(args[0]);
const byte *chars_to_del; const byte *chars_to_del;
uint chars_to_del_len; uint chars_to_del_len;
...@@ -550,7 +551,9 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) { ...@@ -550,7 +551,9 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
chars_to_del = whitespace; chars_to_del = whitespace;
chars_to_del_len = sizeof(whitespace); chars_to_del_len = sizeof(whitespace);
} else { } else {
assert(MP_OBJ_IS_STR(args[1])); if (mp_obj_get_type(args[1]) != self_type) {
arg_type_mixup();
}
GET_STR_DATA_LEN(args[1], s, l); GET_STR_DATA_LEN(args[1], s, l);
chars_to_del = s; chars_to_del = s;
chars_to_del_len = l; chars_to_del_len = l;
...@@ -594,7 +597,7 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) { ...@@ -594,7 +597,7 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
assert(last_good_char_pos >= first_good_char_pos); assert(last_good_char_pos >= first_good_char_pos);
//+1 to accomodate the last character //+1 to accomodate the last character
machine_uint_t stripped_len = last_good_char_pos - first_good_char_pos + 1; machine_uint_t stripped_len = last_good_char_pos - first_good_char_pos + 1;
return mp_obj_new_str(orig_str + first_good_char_pos, stripped_len, false); return str_new(self_type, orig_str + first_good_char_pos, stripped_len);
} }
STATIC mp_obj_t str_strip(uint n_args, const mp_obj_t *args) { STATIC mp_obj_t str_strip(uint n_args, const mp_obj_t *args) {
......
...@@ -10,3 +10,13 @@ print('www.example.com'.lstrip('cmowz.')) ...@@ -10,3 +10,13 @@ print('www.example.com'.lstrip('cmowz.'))
print(' spacious '.rstrip()) print(' spacious '.rstrip())
print('mississippi'.rstrip('ipz')) print('mississippi'.rstrip('ipz'))
print(b'mississippi'.rstrip(b'ipz'))
try:
print(b'mississippi'.rstrip('ipz'))
except TypeError:
print("TypeError")
try:
print('mississippi'.rstrip(b'ipz'))
except TypeError:
print("TypeError")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment