diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-07-01 01:25:23 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-07-01 01:25:45 +0300 |
commit | 58b7b01cb539cb23109faadaf373e0134b81a6da (patch) | |
tree | 859b271ec3f5a667026e2586a9a0c181bf33e5a7 /extmod/modure.c | |
parent | 871a45dd0c96097601b4cf819aded020150a098c (diff) | |
download | micropython-58b7b01cb539cb23109faadaf373e0134b81a6da.tar.gz micropython-58b7b01cb539cb23109faadaf373e0134b81a6da.zip |
extmod/modure: If input string is bytes, return bytes results too.
This applies to match.group() and split().
For ARM Thumb2, this increased code size by 12 bytes.
Diffstat (limited to 'extmod/modure.c')
-rw-r--r-- | extmod/modure.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/extmod/modure.c b/extmod/modure.c index 7be091cc0d..b4c7a364fe 100644 --- a/extmod/modure.c +++ b/extmod/modure.c @@ -31,6 +31,7 @@ #include "py/nlr.h" #include "py/runtime.h" #include "py/binary.h" +#include "py/objstr.h" #if MICROPY_PY_URE @@ -69,7 +70,8 @@ STATIC mp_obj_t match_group(mp_obj_t self_in, mp_obj_t no_in) { // no match for this group return mp_const_none; } - return mp_obj_new_str(start, self->caps[no * 2 + 1] - start, false); + return mp_obj_new_str_of_type(mp_obj_get_type(self->str), + (const byte*)start, self->caps[no * 2 + 1] - start); } MP_DEFINE_CONST_FUN_OBJ_2(match_group_obj, match_group); @@ -129,6 +131,7 @@ STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) { mp_obj_re_t *self = MP_OBJ_TO_PTR(args[0]); Subject subj; size_t len; + const mp_obj_type_t *str_type = mp_obj_get_type(args[1]); subj.begin = mp_obj_str_get_data(args[1], &len); subj.end = subj.begin + len; int caps_num = (self->re.sub + 1) * 2; @@ -150,7 +153,7 @@ STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) { break; } - mp_obj_t s = mp_obj_new_str(subj.begin, caps[0] - subj.begin, false); + mp_obj_t s = mp_obj_new_str_of_type(str_type, (const byte*)subj.begin, caps[0] - subj.begin); mp_obj_list_append(retval, s); if (self->re.sub > 0) { mp_not_implemented("Splitting with sub-captures"); @@ -161,7 +164,7 @@ STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) { } } - mp_obj_t s = mp_obj_new_str(subj.begin, subj.end - subj.begin, false); + mp_obj_t s = mp_obj_new_str_of_type(str_type, (const byte*)subj.begin, subj.end - subj.begin); mp_obj_list_append(retval, s); return retval; } |