From 330a0c896970d99320529a47f186c831a6ecc4a0 Mon Sep 17 00:00:00 2001 From: "Simen A. W. Olsen" Date: Thu, 28 May 2026 23:54:24 +0200 Subject: feat: add table of content instead of sidebar --- src/main.zig | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index a6bbe31..e9a9fa1 100644 --- a/src/main.zig +++ b/src/main.zig @@ -70,10 +70,19 @@ fn buildVersion( const page = try fetch.get(gpa, client, v.docs_url); defer gpa.free(page); - const xhtml = try html.toXhtml(gpa, page); - defer gpa.free(xhtml); - - const bytes = try epub.build(gpa, .{ .title = title, .version = v.name, .xhtml = xhtml }); + var doc = try html.transform(gpa, page); + defer doc.deinit(); + + // Some older docs pages have malformed upstream HTML that can't be repaired + // without a full HTML5 tree-builder; skip them rather than emit invalid EPUB3. + if (!html.isWellFormed(doc.content)) return error.NotWellFormed; + + const bytes = try epub.build(gpa, .{ + .title = title, + .version = v.name, + .xhtml = doc.content, + .toc = doc.toc, + }); defer gpa.free(bytes); assert(std.mem.startsWith(u8, bytes, "PK")); -- cgit v1.2.3