summaryrefslogtreecommitdiff
path: root/std/string.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 15:12:12 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 15:12:12 +0000
commit7d1944ab9d2307f2736afe8520436872db1c7617 (patch)
tree7380a4f148f9ce0b70ed9f02cfa5e8561c783a7a /std/string.zc
parent8b720543f538862796fec0ff6b7ea12cb140bf0f (diff)
'let' it be
Diffstat (limited to 'std/string.zc')
-rw-r--r--std/string.zc120
1 files changed, 60 insertions, 60 deletions
diff --git a/std/string.zc b/std/string.zc
index a7dd6ce..fe5b0ad 100644
--- a/std/string.zc
+++ b/std/string.zc
@@ -8,18 +8,18 @@ struct String {
impl String {
fn new(s: char*) -> String {
- var len = strlen(s);
- var v = Vec<char>::new();
+ let len = strlen(s);
+ let v = Vec<char>::new();
// Manual copy for now
- for (var i = 0; i < len; i = i + 1) {
+ for (let i = 0; i < len; i = i + 1) {
v.push(s[i]);
}
v.push(0);
// Extract fields to transfer ownership
- var d = v.data;
- var l = v.len;
- var c = v.cap;
+ let d = v.data;
+ let l = v.len;
+ let c = v.cap;
// Forget the local vector so it doesn't free the memory
v.forget();
@@ -49,19 +49,19 @@ impl String {
self.vec.len = self.vec.len - 1;
}
- var other_len = (*other).vec.len;
- for (var i = 0; i < other_len; i = i + 1) {
+ let other_len = (*other).vec.len;
+ for (let i = 0; i < other_len; i = i + 1) {
self.vec.push((*other).vec.get(i));
}
}
fn add(self, other: String*) -> String {
- var new_s = String::from(self.c_str());
+ let new_s = String::from(self.c_str());
new_s.append(other);
- var d = new_s.vec.data;
- var l = new_s.vec.len;
- var c = new_s.vec.cap;
+ let d = new_s.vec.data;
+ let l = new_s.vec.len;
+ let c = new_s.vec.cap;
new_s.forget();
return String { vec: Vec<char> { data: d, len: l, cap: c } };
@@ -80,23 +80,23 @@ impl String {
if (start + len > self.length()) {
panic("substring out of bounds");
}
- var v = Vec<char>::new();
- for (var i: usize = 0; i < len; i = i + 1) {
+ let v = Vec<char>::new();
+ for (let i: usize = 0; i < len; i = i + 1) {
v.push(self.vec.get(start + i));
}
v.push(0);
- var d = v.data;
- var l = v.len;
- var c = v.cap;
+ let d = v.data;
+ let l = v.len;
+ let c = v.cap;
v.forget();
return String { vec: Vec<char> { data: d, len: l, cap: c } };
}
fn find(self, target: char) -> Option<usize> {
- var len = self.length();
- for (var i: usize = 0; i < len; i = i + 1) {
+ let len = self.length();
+ for (let i: usize = 0; i < len; i = i + 1) {
if (self.vec.get(i) == target) {
return Option<usize>::Some(i);
}
@@ -122,16 +122,16 @@ impl String {
}
fn starts_with(self, prefix: char*) -> bool {
- var plen = strlen(prefix);
+ let plen = strlen(prefix);
if plen > self.length() { return false; }
return strncmp(self.c_str(), prefix, plen) == 0;
}
fn ends_with(self, suffix: char*) -> bool {
- var slen = strlen(suffix);
- var len = self.length();
+ let slen = strlen(suffix);
+ let len = self.length();
if slen > len { return false; }
- var offset = (int)(len - slen);
+ let offset = (int)(len - slen);
return strcmp(self.c_str() + offset, suffix) == 0;
}
@@ -140,7 +140,7 @@ impl String {
}
fn _utf8_seq_len(first_byte: char) -> usize {
- var b = (int)first_byte;
+ let b = (int)first_byte;
if ((b & 0x80) == 0) { return 1; }
if ((b & 0xE0) == 0xC0) { return 2; }
if ((b & 0xF0) == 0xE0) { return 3; }
@@ -149,11 +149,11 @@ impl String {
}
fn utf8_len(self) -> usize {
- var count: usize = 0;
- var i: usize = 0;
- var len = self.length();
+ let count: usize = 0;
+ let i: usize = 0;
+ let len = self.length();
while i < len {
- var c = self.vec.get(i);
+ let c = self.vec.get(i);
i = i + String::_utf8_seq_len(c);
count = count + 1;
}
@@ -161,12 +161,12 @@ impl String {
}
fn utf8_at(self, idx: usize) -> String {
- var count: usize = 0;
- var i: usize = 0;
- var len = self.length();
+ let count: usize = 0;
+ let i: usize = 0;
+ let len = self.length();
while i < len {
- var c = self.vec.get(i);
- var seq = String::_utf8_seq_len(c);
+ let c = self.vec.get(i);
+ let seq = String::_utf8_seq_len(c);
if (count == idx) {
return self.substring(i, seq);
@@ -181,13 +181,13 @@ impl String {
fn utf8_substr(self, start_idx: usize, num_chars: usize) -> String {
if (num_chars == 0) { return String::new(""); }
- var byte_start: usize = 0;
- var byte_len: usize = 0;
+ let byte_start: usize = 0;
+ let byte_len: usize = 0;
- var count: usize = 0;
- var i: usize = 0;
- var len = self.length();
- var found_start = false;
+ let count: usize = 0;
+ let i: usize = 0;
+ let len = self.length();
+ let found_start = false;
while i < len {
// Check if we reached the start char
@@ -198,7 +198,7 @@ impl String {
count = 0;
} else if (!found_start) {
// Still seeking start
- var c = self.vec.get(i);
+ let c = self.vec.get(i);
i = i + String::_utf8_seq_len(c);
count = count + 1;
continue;
@@ -206,8 +206,8 @@ impl String {
// If we are here, we are collecting chars
if (count < num_chars) {
- var c = self.vec.get(i);
- var seq = String::_utf8_seq_len(c);
+ let c = self.vec.get(i);
+ let seq = String::_utf8_seq_len(c);
byte_len = byte_len + seq;
i = i + seq;
count = count + 1;
@@ -221,12 +221,12 @@ impl String {
return self.substring(byte_start, byte_len);
}
fn split(self, delim: char) -> Vec<String> {
- var parts = Vec<String>::new();
- var len = self.length();
+ let parts = Vec<String>::new();
+ let len = self.length();
if (len == 0) { return parts; }
- var start: usize = 0;
- var i: usize = 0;
+ let start: usize = 0;
+ let i: usize = 0;
while i < len {
if (self.vec.get(i) == delim) {
@@ -246,13 +246,13 @@ impl String {
}
fn trim(self) -> String {
- var start: usize = 0;
- var len = self.length();
- var end = len;
+ let start: usize = 0;
+ let len = self.length();
+ let end = len;
// Find start
while (start < len) {
- var c = self.vec.get(start);
+ let c = self.vec.get(start);
if (c != ' ' && c != '\t' && c != '\n' && c != '\r') {
break;
}
@@ -265,7 +265,7 @@ impl String {
// Find end
while (end > start) {
- var c = self.vec.get(end - 1);
+ let c = self.vec.get(end - 1);
if (c != ' ' && c != '\t' && c != '\n' && c != '\r') {
break;
}
@@ -276,20 +276,20 @@ impl String {
}
fn replace(self, target: char*, replacement: char*) -> String {
- var t_len = strlen(target);
+ let t_len = strlen(target);
if (t_len == 0) return self.substring(0, self.length()); // clone
- var s_len = self.length();
- var result = String::new("");
+ let s_len = self.length();
+ let result = String::new("");
- var i: usize = 0;
+ let i: usize = 0;
while (i < s_len) {
// Check if match
if (i + t_len <= s_len) {
- var is_match = true;
+ let is_match = true;
// Manual strncmp against vec data
- for (var k: usize = 0; k < t_len; k = k + 1) {
+ for (let k: usize = 0; k < t_len; k = k + 1) {
if (self.vec.get(i + k) != target[k]) {
is_match = false;
break;
@@ -297,7 +297,7 @@ impl String {
}
if (is_match) {
- var r_str = String::new(replacement);
+ let r_str = String::new(replacement);
result.append(&r_str);
i = i + t_len;
continue;
@@ -305,10 +305,10 @@ impl String {
}
// Append single char
- var v = Vec<char>::new();
+ let v = Vec<char>::new();
v.push(self.vec.get(i));
v.push(0);
- var ch_s = String::new(v.data);
+ let ch_s = String::new(v.data);
result.append(&ch_s);
v.free();
i = i + 1;