@@ -619,6 +619,17 @@ STATIC mp_obj_t str_startswith(uint n_args, const mp_obj_t *args) {
619619 return MP_BOOL (memcmp (str + index_val , prefix , prefix_len ) == 0 );
620620}
621621
622+ STATIC mp_obj_t str_endswith (uint n_args , const mp_obj_t * args ) {
623+ GET_STR_DATA_LEN (args [0 ], str , str_len );
624+ GET_STR_DATA_LEN (args [1 ], suffix , suffix_len );
625+ assert (n_args == 2 );
626+
627+ if (suffix_len > str_len ) {
628+ return mp_const_false ;
629+ }
630+ return MP_BOOL (memcmp (str + (str_len - suffix_len ), suffix , suffix_len ) == 0 );
631+ }
632+
622633enum { LSTRIP , RSTRIP , STRIP };
623634
624635STATIC mp_obj_t str_uni_strip (int type , uint n_args , const mp_obj_t * args ) {
@@ -1541,6 +1552,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(str_join_obj, str_join);
15411552STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_split_obj , 1 , 3 , str_split );
15421553STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_rsplit_obj , 1 , 3 , str_rsplit );
15431554STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_startswith_obj , 2 , 3 , str_startswith );
1555+ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_endswith_obj , 2 , 3 , str_endswith );
15441556STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_strip_obj , 1 , 2 , str_strip );
15451557STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_lstrip_obj , 1 , 2 , str_lstrip );
15461558STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (str_rstrip_obj , 1 , 2 , str_rstrip );
@@ -1565,6 +1577,7 @@ STATIC const mp_map_elem_t str_locals_dict_table[] = {
15651577 { MP_OBJ_NEW_QSTR (MP_QSTR_split ), (mp_obj_t )& str_split_obj },
15661578 { MP_OBJ_NEW_QSTR (MP_QSTR_rsplit ), (mp_obj_t )& str_rsplit_obj },
15671579 { MP_OBJ_NEW_QSTR (MP_QSTR_startswith ), (mp_obj_t )& str_startswith_obj },
1580+ { MP_OBJ_NEW_QSTR (MP_QSTR_endswith ), (mp_obj_t )& str_endswith_obj },
15681581 { MP_OBJ_NEW_QSTR (MP_QSTR_strip ), (mp_obj_t )& str_strip_obj },
15691582 { MP_OBJ_NEW_QSTR (MP_QSTR_lstrip ), (mp_obj_t )& str_lstrip_obj },
15701583 { MP_OBJ_NEW_QSTR (MP_QSTR_rstrip ), (mp_obj_t )& str_rstrip_obj },
0 commit comments