diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 10006fec..abe7cb33 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -161,8 +161,7 @@ pub const Page = struct { } // if the page has a pointer to a document, dumps the HTML. - const root = try parser.documentGetDocumentElement(self.doc.?) orelse return; - try Dump.htmlFile(root, out); + try Dump.htmlFile(self.doc.?, out); } // spec reference: https://html.spec.whatwg.org/#document-lifecycle @@ -244,11 +243,11 @@ pub const Page = struct { var sasync = std.ArrayList(*parser.Element).init(self.allocator); defer sasync.deinit(); - const root = try parser.documentGetDocumentElement(doc) orelse return; // TODO send loaded event in this case? + const root = parser.documentToNode(doc); const walker = Walker{}; var next: ?*parser.Node = null; while (true) { - next = try walker.get_next(parser.elementToNode(root), next) orelse break; + next = try walker.get_next(root, next) orelse break; // ignore non-elements nodes. if (try parser.nodeType(next.?) != .element) { diff --git a/src/browser/dump.zig b/src/browser/dump.zig index a23bd5b9..cbf7e3f4 100644 --- a/src/browser/dump.zig +++ b/src/browser/dump.zig @@ -4,17 +4,17 @@ const File = std.fs.File; const parser = @import("../netsurf.zig"); const Walker = @import("../dom/html_collection.zig").WalkerChildren; -pub fn htmlFile(root: *parser.Element, out: File) !void { - try out.writeAll("\n"); - try nodeFile(root, out); - try out.writeAll("\n"); +pub fn htmlFile(doc: *parser.Document, out: File) !void { + try out.writeAll("\n"); + try nodeFile(parser.documentToNode(doc), out); + try out.writeAll("\n"); } -fn nodeFile(root: *parser.Element, out: File) !void { +fn nodeFile(root: *parser.Node, out: File) !void { const walker = Walker{}; var next: ?*parser.Node = null; while (true) { - next = try walker.get_next(parser.elementToNode(root), next) orelse break; + next = try walker.get_next(root, next) orelse break; switch (try parser.nodeType(next.?)) { .element => { // open the tag @@ -40,7 +40,7 @@ fn nodeFile(root: *parser.Element, out: File) !void { // write the children // TODO avoid recursion - try nodeFile(parser.nodeToElement(next.?), out); + try nodeFile(next.?, out); // close the tag try out.writeAll("