mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 07:03:29 +00:00
dump: handle void HTML elements
This commit is contained in:
@@ -40,6 +40,9 @@ pub fn writeNode(root: *parser.Node, writer: anytype) !void {
|
|||||||
|
|
||||||
try writer.writeAll(">");
|
try writer.writeAll(">");
|
||||||
|
|
||||||
|
// void elements can't have any content.
|
||||||
|
if (try isVoid(parser.nodeToElement(next.?))) continue;
|
||||||
|
|
||||||
// write the children
|
// write the children
|
||||||
// TODO avoid recursion
|
// TODO avoid recursion
|
||||||
try writeNode(next.?, writer);
|
try writeNode(next.?, writer);
|
||||||
@@ -83,6 +86,17 @@ pub fn writeNode(root: *parser.Node, writer: anytype) !void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr
|
||||||
|
// https://html.spec.whatwg.org/#void-elements
|
||||||
|
fn isVoid(elem: *parser.Element) !bool {
|
||||||
|
const tag = try parser.elementHTMLGetTagType(@as(*parser.ElementHTML, @ptrCast(elem)));
|
||||||
|
return switch (tag) {
|
||||||
|
.area, .base, .br, .col, .embed, .hr, .img, .input, .link => true,
|
||||||
|
.meta, .source, .track, .wbr => true,
|
||||||
|
else => false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
test "dump.writeHTML" {
|
test "dump.writeHTML" {
|
||||||
const out = try std.fs.openFileAbsolute("/dev/null", .{ .mode = .write_only });
|
const out = try std.fs.openFileAbsolute("/dev/null", .{ .mode = .write_only });
|
||||||
defer out.close();
|
defer out.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user