Ascii trim

This commit is contained in:
2026-07-27 19:45:00 +02:00
parent 8534075307
commit bd008c51fe
4 changed files with 116 additions and 11 deletions
+48 -4
View File
@@ -7,7 +7,7 @@ Str str_empty(void)
return str;
}
Str str_substr(Str str, U32 start, U32 len)
Str str_slice(Str str, U32 start, U32 len)
{
Assert(start < str.len);
Assert(len <= str.len);
@@ -16,7 +16,6 @@ Str str_substr(Str str, U32 start, U32 len)
return new_str;
}
Str str_concat(Allocator *alloc, Str first, Str second)
{
Str str;
@@ -43,6 +42,51 @@ Str str_push(Allocator *alloc, Str str)
return *new_str;
}
static INLINE bool char_is_ascii_whitespace(U8 byte)
{
return byte == ' ' || byte == '\t' || byte == '\v' || byte == '\f' || byte == '\r' || byte == '\n';
}
Str str_ascii_trim_left(Str str)
{
U8 *start = str.str;
U8 *end = str.str + str.len;
while (start != end) {
if (!char_is_ascii_whitespace(*start)) {
break;
}
start++;
}
return str_create(start, (U32)(end - start));
}
Str str_ascii_trim_right(Str str)
{
U8 *start = str.str;
U8 *end = str.str + str.len;
while (start != end) {
if (!char_is_ascii_whitespace(*(end - 1))) {
break;
}
end--;
}
return str_create(start, (U32)(end - start));
}
Str str_ascii_trim(Str str)
{
Str new_str = str_ascii_trim_left(str);
new_str = str_ascii_trim_right(new_str);
return new_str;
}
S64 str_substr(Str haystack, Str to_find)
{
}
// split @str on any byte in @separators, place split strings in @vec
void str_split(Str str, Str separators, StrVec *vec)
{
@@ -58,14 +102,14 @@ void str_split(Str str, Str separators, StrVec *vec)
break;
}
Str sub_str = str_substr(str, start_pos, i - start_pos);
Str sub_str = str_slice(str, start_pos, i - start_pos);
vec->strings[vec->len] = sub_str;
vec->len++;
start_pos = i + 1;
}
}
if (start_pos < str.len && vec->len < vec->max_len) {
Str sub_str = str_substr(str, start_pos, str.len - start_pos);
Str sub_str = str_slice(str, start_pos, str.len - start_pos);
vec->strings[vec->len] = sub_str;
vec->len++;
}