authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-08-08 21:20:20 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-08-08 21:20:20 -07:00
log97dee90956930f7c9e8dbe652c36e543c416e3a3
treead028daab47e64816692e8ac4dd2968488d883f4
parentdf816f1c1d19a232094507b97e7359f7ab5754ea

add support for optionals in `#if` and `#ifnot`


1 files changed, 10 insertions(+), 2 deletions(-)

src/lib.zig+10-2
......@@ -83,12 +83,20 @@ fn do(writer: anytype, comptime value: astgen.Value, data: anytype, ctx: anytype
8383 .@"if" => {
8484 comptime assertEqual(v.args.len, 1);
8585 const x = search(v.args[0], data);
86 if (x) try do(writer, body, data, ctx, indent, flag1);
86 switch (@typeInfo(@TypeOf(x))) {
87 .Bool => if (x) try do(writer, body, data, ctx, indent, flag1),
88 .Optional => if (x) |_| try do(writer, body, data, ctx, indent, flag1),
89 else => unreachable,
90 }
8791 },
8892 .ifnot => {
8993 comptime assertEqual(v.args.len, 1);
9094 const x = search(v.args[0], data);
91 if (!x) try do(writer, body, data, ctx, indent, flag1);
95 switch (@typeInfo(@TypeOf(x))) {
96 .Bool => if (x) {} else try do(writer, body, data, ctx, indent, flag1),
97 .Optional => if (x) |_| {} else try do(writer, body, data, ctx, indent, flag1),
98 else => unreachable,
99 }
92100 },
93101 .ifequal => {
94102 comptime assertEqual(v.args.len, 2);