characterdata: add nextElementSibling getter

Signed-off-by: Francis Bouvier <francis.bouvier@gmail.com>
This commit is contained in:
Francis Bouvier
2023-10-02 17:25:32 +02:00
parent 2d6f497946
commit 202ee1646d
2 changed files with 44 additions and 6 deletions

View File

@@ -267,6 +267,21 @@ pub fn nodeNextSibling(node: *Node) ?*Node {
return res;
}
pub fn nodeNextElementSibling(node: *Node) ?*Element {
var n = node;
while (true) {
const next = nodeNextSibling(n);
if (next == null) {
return null;
}
if (nodeType(next.?) == .element) {
return @as(*Element, @ptrCast(next.?));
}
n = next.?;
}
return null;
}
pub fn nodePreviousSibling(node: *Node) ?*Node {
var res: ?*Node = undefined;
_ = nodeVtable(node).dom_node_get_previous_sibling.?(node, &res);
@@ -424,6 +439,10 @@ fn characterDataVtable(data: *CharacterData) c.dom_characterdata_vtable {
return getVtable(c.dom_characterdata_vtable, CharacterData, data);
}
pub inline fn characterDataToNode(cdata: *CharacterData) *Node {
return @as(*Node, @ptrCast(cdata));
}
pub fn characterDataData(cdata: *CharacterData) []const u8 {
var s: ?*String = undefined;
_ = characterDataVtable(cdata).dom_characterdata_get_data.?(cdata, &s);