lib/zen/src/diagram/stack.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const std = @import("std");
 2 
 3 const root = @import("root.zig");
 4 
 5 const spec = root.spec;
 6 
 7 pub fn base(marks: []const spec.Mark, x: []const u8, y: f64) f64 {
 8     var result: f64 = 0;
 9     for (marks) |mark| {
10         switch (mark) {
11             .bar => |bar| {
12                 if (std.mem.eql(u8, bar.x, x) and (bar.y >= 0) == (y >= 0)) result += bar.y;
13             },
14             else => {},
15         }
16     }
17     return result;
18 }
19 
20 pub fn has(document: *const spec.Document) bool {
21     for (document.transforms.items) |transform| {
22         switch (transform) {
23             .stack => |stack| if (stack.mark.len == 0 or std.mem.eql(u8, stack.mark, "bar")) return true,
24         }
25     }
26     return false;
27 }