aboutsummaryrefslogtreecommitdiff
path: root/src/string_immutable.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-21 21:49:32 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-21 21:49:32 -0700
commit9c109b744f1729d1207f8f38cf1beae815e9690d (patch)
tree532a36f6e7064d403c3f0bacf0a923748314ade3 /src/string_immutable.zig
parent42c1d54b3f3890e97cd0d5665fcd95fe59b462cf (diff)
downloadbun-9c109b744f1729d1207f8f38cf1beae815e9690d.tar.gz
bun-9c109b744f1729d1207f8f38cf1beae815e9690d.tar.zst
bun-9c109b744f1729d1207f8f38cf1beae815e9690d.zip
Most of the ESM resolution algorithm (still untested)
Diffstat (limited to 'src/string_immutable.zig')
-rw-r--r--src/string_immutable.zig17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index 7010cd538..4bfc707b7 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -23,10 +23,27 @@ pub inline fn indexAny(in: anytype, target: string) ?usize {
return null;
}
+pub inline fn indexAnyComptime(target: string, comptime chars: string) ?usize {
+ for (target) |parent, i| {
+ inline for (chars) |char| {
+ if (char == parent) return i;
+ }
+ }
+ return null;
+}
+
pub inline fn indexOfChar(self: string, char: u8) ?usize {
return std.mem.indexOfScalar(@TypeOf(char), self, char);
}
+pub fn indexOfCharNeg(self: string, char: u8) i32 {
+ var i: u32 = 0;
+ while (i < self.len) : (i += 1) {
+ if (self[i] == value) return @intCast(i32, i);
+ }
+ return -1;
+}
+
pub inline fn lastIndexOfChar(self: string, char: u8) ?usize {
return std.mem.lastIndexOfScalar(u8, self, char);
}