diff options
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main.zig b/src/main.zig index 55b7e0e..d0e94db 100644 --- a/src/main.zig +++ b/src/main.zig @@ -74,15 +74,24 @@ fn HashMapFormatter(HashMap: type) type { options: std.fmt.FormatOptions, writer: anytype, ) !void { - _ = fmt; + const k_fmt, const v_fmt = comptime blk: { + var fmt_it = std.mem.splitScalar(u8, fmt, ','); + const k_fmt = fmt_it.next() orelse ""; + const v_fmt = fmt_it.next() orelse ""; + break :blk .{ k_fmt, v_fmt }; + }; _ = options; try writer.writeAll("{"); var it = hash_map.iterator(); var first = true; while (it.next()) |kv| { try writer.print( - "{s} {" ++ (if (@TypeOf(kv.key_ptr.*) == []const u8) "s" else "any") ++ "}: {any}", - .{ if (first) "" else ",", kv.key_ptr.*, kv.value_ptr.* }, + "{s} {" ++ k_fmt ++ "}: {" ++ v_fmt ++ "}", + .{ + if (first) "" else ",", + kv.key_ptr.*, + kv.value_ptr.*, + }, ); first = false; } |