aboutsummaryrefslogtreecommitdiff
path: root/src/eval/blocks.zig
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2026-04-28 15:08:02 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2026-04-28 15:08:02 +0200
commit3b1e6547d069d7c438af551a4989972802a895ee (patch)
tree7c32e8fcac432539888e0cdb598f495316b0772d /src/eval/blocks.zig
parente154408e8ddeaee83242002f4c7af68b29d3a677 (diff)
perf(html): reduce memory usage
Diffstat (limited to 'src/eval/blocks.zig')
-rw-r--r--src/eval/blocks.zig21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/eval/blocks.zig b/src/eval/blocks.zig
index 78e28f6..eb583c7 100644
--- a/src/eval/blocks.zig
+++ b/src/eval/blocks.zig
@@ -24,8 +24,10 @@ pub const Code = struct {
var el = try HTML.Content.init(alloc, "pre");
if (self.attribute) |attr| try el.base.setAttribute("data-code", attr);
var code = try HTML.Content.init(alloc, "code");
- for (self.content.items) |it| try code.append(try it.html(alloc));
- try el.append(code.element());
+ var root = try HTML.Root.init(alloc);
+ for (self.content.items) |it| root.append(try it.html(root.allocator()));
+ code.content = root.element();
+ el.content = code.element();
return el.element();
}
};
@@ -46,14 +48,17 @@ pub const Figure = struct {
return .{ .ptr = self, .vtable = .{ .html = Self.html } };
}
- fn html(context: *anyopaque, alloc: Allocator) HTML.Error!HTML {
+ fn html(context: *anyopaque, parent: Allocator) HTML.Error!HTML {
const self: *Self = @ptrCast(@alignCast(context));
- var el = try HTML.Content.init(alloc, "figure");
- try el.append(try self.content.html(alloc));
+ var el = try HTML.Content.init(parent, "figure");
+ var root = try HTML.Root.init(parent);
+ const alloc = root.allocator();
+ root.append(try self.content.html(alloc));
+ el.content = root.element();
const caption = self.caption orelse return el.element();
var figcap = try HTML.Content.init(alloc, "figcaption");
- try figcap.append(try caption.html(alloc));
- try el.append(figcap.element());
+ figcap.content = try caption.html(alloc);
+ root.append(figcap.element());
return el.element();
}
};
@@ -80,7 +85,7 @@ pub const Callout = struct {
var el = try HTML.Content.init(alloc, "div");
try el.base.appendClass("callout");
if (self.kind) |kind| try el.base.setAttribute("data-callout", kind);
- try el.append(try self.content.html(alloc));
+ el.content = try self.content.html(alloc);
return el.element();
}
};