From 810bd11a5b6f7b10d18a7dd98adaf3ba08518f35 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Wed, 28 Feb 2024 14:39:22 +0100 Subject: [PATCH] dump: rename HTML dump funcs --- src/browser/browser.zig | 2 +- src/browser/dump.zig | 57 +++++++++++++++++++++-------------------- src/dom/element.zig | 4 +-- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 8de182b8..5422bf07 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -151,7 +151,7 @@ pub const Page = struct { } // if the page has a pointer to a document, dumps the HTML. - try Dump.htmlFile(self.doc.?, out); + try Dump.writeHTML(self.doc.?, out); } // spec reference: https://html.spec.whatwg.org/#document-lifecycle diff --git a/src/browser/dump.zig b/src/browser/dump.zig index 7bc1f572..96f6770c 100644 --- a/src/browser/dump.zig +++ b/src/browser/dump.zig @@ -4,14 +4,15 @@ const File = std.fs.File; const parser = @import("../netsurf.zig"); const Walker = @import("../dom/walker.zig").WalkerChildren; -pub fn htmlFile(doc: *parser.Document, out: anytype) !void { - try out.writeAll("\n"); - try nodeFile(parser.documentToNode(doc), out); - try out.writeAll("\n"); +// writer must be a std.io.Writer +pub fn writeHTML(doc: *parser.Document, writer: anytype) !void { + try writer.writeAll("\n"); + try writeNode(parser.documentToNode(doc), writer); + try writer.writeAll("\n"); } -// out must be a std.io.Writer -pub fn nodeFile(root: *parser.Node, out: anytype) !void { +// writer must be a std.io.Writer +pub fn writeNode(root: *parser.Node, writer: anytype) !void { const walker = Walker{}; var next: ?*parser.Node = null; while (true) { @@ -20,8 +21,8 @@ pub fn nodeFile(root: *parser.Node, out: anytype) !void { .element => { // open the tag const tag = try parser.nodeLocalName(next.?); - try out.writeAll("<"); - try out.writeAll(tag); + try writer.writeAll("<"); + try writer.writeAll(tag); // write the attributes const map = try parser.nodeGetAttributes(next.?); @@ -29,40 +30,40 @@ pub fn nodeFile(root: *parser.Node, out: anytype) !void { var i: u32 = 0; while (i < ln) { const attr = try parser.namedNodeMapItem(map, i) orelse break; - try out.writeAll(" "); - try out.writeAll(try parser.attributeGetName(attr)); - try out.writeAll("=\""); - try out.writeAll(try parser.attributeGetValue(attr) orelse ""); - try out.writeAll("\""); + try writer.writeAll(" "); + try writer.writeAll(try parser.attributeGetName(attr)); + try writer.writeAll("=\""); + try writer.writeAll(try parser.attributeGetValue(attr) orelse ""); + try writer.writeAll("\""); i += 1; } - try out.writeAll(">"); + try writer.writeAll(">"); // write the children // TODO avoid recursion - try nodeFile(next.?, out); + try writeNode(next.?, writer); // close the tag - try out.writeAll(""); + try writer.writeAll(""); }, .text => { const v = try parser.nodeValue(next.?) orelse continue; - try out.writeAll(v); + try writer.writeAll(v); }, .cdata_section => { const v = try parser.nodeValue(next.?) orelse continue; - try out.writeAll(""); + try writer.writeAll(""); }, .comment => { const v = try parser.nodeValue(next.?) orelse continue; - try out.writeAll(""); + try writer.writeAll(""); }, // TODO handle processing instruction dump .processing_instruction => continue, @@ -82,8 +83,8 @@ pub fn nodeFile(root: *parser.Node, out: anytype) !void { } } -// HTMLFileTestFn is run by run_tests.zig -pub fn HTMLFileTestFn(out: File) !void { +// writeHTMLTestFn is run by run_tests.zig +pub fn writeHTMLTestFn(out: File) !void { const file = try std.fs.cwd().openFile("test.html", .{}); defer file.close(); @@ -93,5 +94,5 @@ pub fn HTMLFileTestFn(out: File) !void { const doc = parser.documentHTMLToDocument(doc_html); - try htmlFile(doc, out); + try writeHTML(doc, out); } diff --git a/src/dom/element.zig b/src/dom/element.zig index 27d4870f..6e3cb8d6 100644 --- a/src/dom/element.zig +++ b/src/dom/element.zig @@ -8,7 +8,7 @@ const checkCases = jsruntime.test_utils.checkCases; const Variadic = jsruntime.Variadic; const collection = @import("html_collection.zig"); -const dumpNode = @import("../browser/dump.zig").nodeFile; +const writeNode = @import("../browser/dump.zig").writeNode; const Node = @import("node.zig").Node; const Walker = @import("walker.zig").WalkerDepthFirst; @@ -83,7 +83,7 @@ pub const Element = struct { var buf = std.ArrayList(u8).init(alloc); defer buf.deinit(); - try dumpNode(parser.elementToNode(self), buf.writer()); + try writeNode(parser.elementToNode(self), buf.writer()); // TODO express the caller owned the slice. // https://github.com/lightpanda-io/jsruntime-lib/issues/195 return buf.toOwnedSlice();