aboutsummaryrefslogtreecommitdiff
path: root/src/eval/html/Root.zig
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2026-04-30 17:25:04 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2026-04-30 17:25:04 +0200
commit103efd52b59f77fbfde6a1b7daf65b16c2c26810 (patch)
tree722f7be1ea5ffc36fb5d17aab0fb64cb6cb28665 /src/eval/html/Root.zig
parent987bd9323a384e8f042311262d9b0e0eba38da15 (diff)
refactor(html): supports more type in root append
Diffstat (limited to 'src/eval/html/Root.zig')
-rw-r--r--src/eval/html/Root.zig10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/eval/html/Root.zig b/src/eval/html/Root.zig
index 83859d4..acfe82e 100644
--- a/src/eval/html/Root.zig
+++ b/src/eval/html/Root.zig
@@ -35,7 +35,13 @@ pub fn allocator(self: *Self) Allocator {
return self.arena.allocator();
}
-pub fn append(self: *Self, el: Element) void {
+pub fn append(self: *Self, raw: anytype) Error!void {
+ const el: Element = blk: {
+ const T = @TypeOf(raw);
+ if (T == Element) break :blk raw;
+ if (@hasDecl(T, "html")) break :blk try raw.html(self.allocator());
+ @compileError("cannot convert " ++ @typeName(T) ++ " into " ++ @typeName(Element));
+ };
self.content.append(&el.node().node);
}
@@ -52,6 +58,6 @@ pub fn render(self: *Self, alloc: Allocator) Error![]const u8 {
var arena = Arena.init(alloc);
defer arena.deinit();
var v = self.content.first;
- while (v) |it| : (v = it.next) try acc.appendSlice(alloc, try Node.from(it).element().render(arena.allocator()));
+ while (v) |it| : (v = it.next) try acc.appendSlice(alloc, try Node.from(it).render(arena.allocator()));
return acc.toOwnedSlice(alloc);
}