| ... | ... | @@ -164,13 +164,14 @@ fn do(alloc: *std.mem.Allocator, writer: anytype, comptime value: astgen.Value, |
| 164 | 164 | } |
| 165 | 165 | |
| 166 | 166 | fn search(comptime args: []const []const u8, ctx: anytype) FieldSearch(@TypeOf(ctx), args) { |
| 167 | if (args.len == 0) return ctx; |
| 167 | 168 | const f = @field(ctx, args[0]); |
| 168 | 169 | if (args.len == 1) return f; |
| 169 | 170 | return search(args[1..], f); |
| 170 | 171 | } |
| 171 | 172 | |
| 172 | 173 | fn FieldSearch(comptime T: type, comptime args: []const []const u8) type { |
| 173 | | return if (args.len == 1) Field(T, args[0]) else FieldSearch(Field(T, args[0]), args[1..]); |
| 174 | return if (args.len == 0) T else if (args.len == 1) Field(T, args[0]) else FieldSearch(Field(T, args[0]), args[1..]); |
| 174 | 175 | } |
| 175 | 176 | |
| 176 | 177 | fn Field(comptime T: type, comptime field_name: []const u8) type { |