ref: fe0c54bda8e70766480784336fc881567620410e
dir: /lib/std/strstrip.myr/
use "types" use "utf" use "chartype" pkg std = const strstrip : (str : byte[:] -> byte[:]) const strfstrip : (str : byte[:] -> byte[:]) const strrstrip : (str : byte[:] -> byte[:]) ;; /* strip blanks from both head and tail of str */ const strstrip = {str -> strrstrip(strfstrip(str)) } /* strip forward on str */ const strfstrip = {str var c for c = decode(str); isblank(c); c = decode(str) str = str[charlen(c):] ;; -> str } /* strip reverse on str */ const strrstrip = {str var end /* scan backwards for start of utf8 char */ end = str.len for var i = str.len; i != 0; i-- if str[i - 1] & 0x80 == 0 || str[i-1] & 0xc0 != 0x80 if !isspace(decode(str[i-1:])) break ;; end = i - 1 ;; ;; -> str[:end] }