more string fns
This commit is contained in:
@@ -428,3 +428,41 @@ fn StringUTF16Const str16FromStr8(Arena* arena, String string) {
|
||||
return result;
|
||||
}
|
||||
|
||||
fn u32 stringCountLines(String s) {
|
||||
u32 result = 1;
|
||||
for (u32 i = 0; i < s.length; i++) {
|
||||
if (s.bytes[i] == '\n') {
|
||||
result += 1;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
fn u32 stringLineLen(String s, u32 line_number) {
|
||||
u32 result = 0;
|
||||
u32 current_line = 0;
|
||||
for (u32 i = 0; i < s.length && current_line <= line_number; i++) {
|
||||
if (current_line == line_number) {
|
||||
result += 1;
|
||||
}
|
||||
if (s.bytes[i] == '\n') {
|
||||
current_line += 1;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
fn u32 stringLineStartByteOffset(String s, u32 line_number) {
|
||||
u32 current_line = 0;
|
||||
for (u32 i = 0; i < s.length; i++) {
|
||||
// do this check first, so we won't return '\n' character pos, but the following char pos
|
||||
if (current_line == line_number) {
|
||||
return i;
|
||||
}
|
||||
if (s.bytes[i] == '\n') {
|
||||
current_line += 1;
|
||||
}
|
||||
}
|
||||
return s.length;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user