From eafdbaaadad375f62e2a8e825ca9fe931fb2708e Mon Sep 17 00:00:00 2001 From: Prakhar54-byte <162185166+Prakhar54-byte@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:58:08 +0530 Subject: [PATCH] refactor: simplify Enum parse call and loop parsing logic --- src/terminal/osc/parsers/context_signal.zig | 24 +++++---------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/src/terminal/osc/parsers/context_signal.zig b/src/terminal/osc/parsers/context_signal.zig index f4a6efe77..ff82af392 100644 --- a/src/terminal/osc/parsers/context_signal.zig +++ b/src/terminal/osc/parsers/context_signal.zig @@ -136,16 +136,8 @@ pub const Field = enum { comptime self: Field, raw: []const u8, ) self.Type() { - var remaining = raw; - while (remaining.len > 0) { - const len = std.mem.indexOfScalar( - u8, - remaining, - ';', - ) orelse remaining.len; - - const full = remaining[0..len]; - + var it = std.mem.splitScalar(u8, raw, ';'); + while (it.next()) |full| { // Parse key=value const value = value: { if (std.mem.indexOfScalar( @@ -162,18 +154,12 @@ pub const Field = enum { } } - // No match, advance past the semicolon - if (len < remaining.len) { - remaining = remaining[len + 1 ..]; - continue; - } - - break; + continue; }; return switch (self) { - .type => ContextType.parse(value), - .exit => ExitStatus.parse(value), + .type => .parse(value), + .exit => .parse(value), .pid, .pidfdid, .status => value: { for (value) |c| { if (c < '0' or c > '9') break :value null;