Add truncate_to_byte and truncate_to_rune for packages strings and bytes

This commit is contained in:
gingerBill
2021-04-22 15:49:10 +01:00
parent 8a86c4c7cc
commit d33350e3a5
2 changed files with 30 additions and 0 deletions

View File

@@ -16,6 +16,21 @@ ptr_from_slice :: proc(str: []byte) -> ^byte {
return d.data;
}
truncate_to_byte :: proc(str: []byte, b: byte) -> []byte {
n := index_byte(str, b);
if n < 0 {
n = len(str);
}
return str[:n];
}
truncate_to_rune :: proc(str: []byte, r: rune) -> []byte {
n := index_rune(str, r);
if n < 0 {
n = len(str);
}
return str[:n];
}
// Compares two strings, returning a value representing which one comes first lexiographically.
// -1 for `a`; 1 for `b`, or 0 if they are equal.
compare :: proc(lhs, rhs: []byte) -> int {

View File

@@ -33,6 +33,21 @@ unsafe_string_to_cstring :: proc(str: string) -> cstring {
return cstring(d.data);
}
truncate_to_byte :: proc(str: string, b: byte) -> string {
n := index_byte(str, b);
if n < 0 {
n = len(str);
}
return str[:n];
}
truncate_to_rune :: proc(str: string, r: rune) -> string {
n := index_rune(str, r);
if n < 0 {
n = len(str);
}
return str[:n];
}
// Compares two strings, returning a value representing which one comes first lexiographically.
// -1 for `a`; 1 for `b`, or 0 if they are equal.
compare :: proc(lhs, rhs: string) -> int {