diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-01-26 23:39:48 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-01-26 23:39:48 +0900 |
| commit | c2a92de7fa1af4fc058f8e5e8317fb67a6df18ef (patch) | |
| tree | b9a423eb1c4be33baf4f2f386afb0e2adc7a96f9 /src/jq/execute.zig | |
| parent | c524ef71e6e33495ec682558d3e4eb05648a72c9 (diff) | |
| download | zgjq-c2a92de7fa1af4fc058f8e5e8317fb67a6df18ef.tar.gz zgjq-c2a92de7fa1af4fc058f8e5e8317fb67a6df18ef.tar.zst zgjq-c2a92de7fa1af4fc058f8e5e8317fb67a6df18ef.zip | |
implement // operator
Diffstat (limited to 'src/jq/execute.zig')
| -rw-r--r-- | src/jq/execute.zig | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/jq/execute.zig b/src/jq/execute.zig index f2bfe8c..0565004 100644 --- a/src/jq/execute.zig +++ b/src/jq/execute.zig @@ -328,6 +328,19 @@ pub const Runtime = struct { const result = try jv.ops.compare(lhs, rhs, .ge); try self.values.push(.{ .bool = result }); }, + .alt => { + std.debug.assert(self.values.ensureSize(3)); + + _ = self.values.pop(); + const lhs = self.values.pop(); + const rhs = self.values.pop(); + const is_falsy = switch (lhs) { + .null => true, + .bool => |b| !b, + else => false, + }; + try self.values.push(if (is_falsy) rhs else lhs); + }, .@"const" => |idx| { std.debug.assert(self.values.ensureSize(1)); |
