aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jq/execute.zig
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-25 20:27:34 +0900
committernsfisis <nsfisis@gmail.com>2026-01-25 20:27:34 +0900
commit797ceeaa2b01070cf31c8d24ce440b8ee5feff7f (patch)
tree0c2bf8c3517f7512645f41acbca0dbf206b7c1b8 /src/jq/execute.zig
parent8b8bc79d647285a170aa928ff31a0989c9ef6e33 (diff)
downloadzgjq-797ceeaa2b01070cf31c8d24ce440b8ee5feff7f.tar.gz
zgjq-797ceeaa2b01070cf31c8d24ce440b8ee5feff7f.tar.zst
zgjq-797ceeaa2b01070cf31c8d24ce440b8ee5feff7f.zip
implement optional index access
Diffstat (limited to 'src/jq/execute.zig')
-rw-r--r--src/jq/execute.zig8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/jq/execute.zig b/src/jq/execute.zig
index 9e3a0d5..caf525a 100644
--- a/src/jq/execute.zig
+++ b/src/jq/execute.zig
@@ -196,6 +196,14 @@ pub const Runtime = struct {
const result = try jv.ops.index(base, key);
try self.values.push(result);
},
+ .index_opt => {
+ std.debug.assert(self.values.ensureSize(2));
+
+ const base = self.values.pop();
+ const key = self.values.pop();
+ const result = jv.ops.index(base, key) catch .null;
+ try self.values.push(result);
+ },
.add => {
std.debug.assert(self.values.ensureSize(3));