support null referene node to Node.insertBefore

This commit is contained in:
Karl Seguin
2025-05-30 18:02:38 +08:00
parent 7202d758a2
commit d39cada0c6

View File

@@ -289,8 +289,11 @@ pub const Node = struct {
} }
} }
pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node: *parser.Node) !*parser.Node { pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union {
return try parser.nodeInsertBefore(self, new_node, ref_node); if (ref_node_) |ref_node| {
return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node));
}
return _appendChild(self, new_node);
} }
pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool { pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool {
@@ -662,6 +665,10 @@ test "Browser.DOM.node" {
.{ "let insertBefore = document.createElement('a')", "undefined" }, .{ "let insertBefore = document.createElement('a')", "undefined" },
.{ "link.insertBefore(insertBefore, text) !== undefined", "true" }, .{ "link.insertBefore(insertBefore, text) !== undefined", "true" },
.{ "link.firstChild.localName === 'a'", "true" }, .{ "link.firstChild.localName === 'a'", "true" },
.{ "let insertBefore2 = document.createElement('b')", null },
.{ "link.insertBefore(insertBefore2, null).localName", "b" },
.{ "link.childNodes[link.childNodes.length - 1].localName", "b" },
}, .{}); }, .{});
try runner.testCases(&.{ try runner.testCases(&.{