From 7712c1d10ec45349c1cd6e66281b7d602350065d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 31 Jan 2026 15:53:23 +0900 Subject: implement slice expression --- src/jq/execute.zig | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/jq/execute.zig') diff --git a/src/jq/execute.zig b/src/jq/execute.zig index 3096be2..9fa410f 100644 --- a/src/jq/execute.zig +++ b/src/jq/execute.zig @@ -273,6 +273,30 @@ pub const Runtime = struct { key.deinit(self.allocator); try self.values.push(result); }, + .slice => { + std.debug.assert(self.values.ensureSize(3)); + + const base = self.values.pop(); + const to = self.values.pop(); + const from = self.values.pop(); + const result = try jv.ops.slice(self.allocator, base, from, to); + base.deinit(self.allocator); + to.deinit(self.allocator); + from.deinit(self.allocator); + try self.values.push(result); + }, + .slice_opt => { + std.debug.assert(self.values.ensureSize(3)); + + const base = self.values.pop(); + const to = self.values.pop(); + const from = self.values.pop(); + const result = jv.ops.slice(self.allocator, base, from, to) catch jv.Value.null; + base.deinit(self.allocator); + to.deinit(self.allocator); + from.deinit(self.allocator); + try self.values.push(result); + }, .add => { std.debug.assert(self.values.ensureSize(3)); -- cgit v1.3-1-g0d28