From c767c52ebf1d9ef042e3f17febebbee3582a9339 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 15 Feb 2026 17:11:52 -0800 Subject: [PATCH] support values passed in by pointer --- src/lib.zig | 1 + test.zig | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/lib.zig b/src/lib.zig index ae0beeb8cf888bd2fd973c69081032aa09bfab66..92afa4c85e79b5cd9c2fb8dac80426272d82ea82 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -375,6 +375,7 @@ fn Field(comptime T: type, comptime field_name: string) type { } switch (@typeInfo(T)) { .optional => |info| return Field(info.child, field_name), + .pointer => |info| return Field(info.child, field_name), else => {}, } for (std.meta.fields(T)) |fld| { diff --git a/test.zig b/test.zig index fff8f2b8461f7c8e65a7c760ddd5c0b129315f9a..35aa58f8455d6c1f36239fc238049e6ee060640b 100644 --- a/test.zig +++ b/test.zig @@ -716,6 +716,31 @@ test { \\ ); } +test { + const alloc = std.testing.allocator; + var builder = std.ArrayList(u8).init(alloc); + defer builder.deinit(); + const S = struct { x: []const u8, y: u32 }; + const text: S = .{ .x = "dynamic", .y = 47 }; + const doc = comptime pek.parse( + \\body( + \\ p("This text for this link is "a[href="https://github.com/nektro/zig-pek"]({text.x})".") + \\) + ); + try pek.compileInner( + alloc, + builder.writer(), + doc, + .{ .Ctx = @This(), .indent = 0, .doindent = true, .doindent2 = true }, + .{ .text = &text }, + ); + try expect(builder.items).toEqualString( + \\ + \\

This text for this link is dynamic.

+ \\ + \\ + ); +} // replacement with custom serializer test { -- 2.54.0