diff options
| author | Simen A. W. Olsen <hello@simenandre.no> | 2026-05-28 23:54:24 +0200 |
|---|---|---|
| committer | Simen A. W. Olsen <hello@simenandre.no> | 2026-05-28 23:54:24 +0200 |
| commit | 330a0c896970d99320529a47f186c831a6ecc4a0 (patch) | |
| tree | 3dc8b3ac700a6e2715f0f81b96e7957320f6352e /src/main.zig | |
| parent | b2d7d90add48e5cd3b644949b9b401fafc6eafbc (diff) | |
| download | ziglang-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.zig | 15 |
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")); |
