aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.zig
diff options
context:
space:
mode:
authorSimen A. W. Olsen <hello@simenandre.no>2026-05-28 23:54:24 +0200
committerSimen A. W. Olsen <hello@simenandre.no>2026-05-28 23:54:24 +0200
commit330a0c896970d99320529a47f186c831a6ecc4a0 (patch)
tree3dc8b3ac700a6e2715f0f81b96e7957320f6352e /src/main.zig
parentb2d7d90add48e5cd3b644949b9b401fafc6eafbc (diff)
downloadziglang-docs-epub-330a0c896970d99320529a47f186c831a6ecc4a0.tar.gz
ziglang-docs-epub-330a0c896970d99320529a47f186c831a6ecc4a0.zip
feat: add table of content instead of sidebar
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig15
1 files changed, 12 insertions, 3 deletions
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);
+ var doc = try html.transform(gpa, page);
+ defer doc.deinit();
- const bytes = try epub.build(gpa, .{ .title = title, .version = v.name, .xhtml = xhtml });
+ // 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"));