diff --git a/src/dom/element.zig b/src/dom/element.zig index 8ef456a7..60043e50 100644 --- a/src/dom/element.zig +++ b/src/dom/element.zig @@ -138,14 +138,26 @@ pub const Element = struct { return try parser.elementGetAttribute(self, qname); } + pub fn _getAttributeNS(self: *parser.Element, ns: []const u8, qname: []const u8) !?[]const u8 { + return try parser.elementGetAttributeNS(self, ns, qname); + } + pub fn _setAttribute(self: *parser.Element, qname: []const u8, value: []const u8) !void { return try parser.elementSetAttribute(self, qname, value); } + pub fn _setAttributeNS(self: *parser.Element, ns: []const u8, qname: []const u8, value: []const u8) !void { + return try parser.elementSetAttributeNS(self, ns, qname, value); + } + pub fn _removeAttribute(self: *parser.Element, qname: []const u8) !void { return try parser.elementRemoveAttribute(self, qname); } + pub fn _removeAttributeNS(self: *parser.Element, ns: []const u8, qname: []const u8) !void { + return try parser.elementRemoveAttributeNS(self, ns, qname); + } + pub fn _hasAttribute(self: *parser.Element, qname: []const u8) !bool { return try parser.elementHasAttribute(self, qname); } diff --git a/src/netsurf/netsurf.zig b/src/netsurf/netsurf.zig index 9c811331..7cae8673 100644 --- a/src/netsurf/netsurf.zig +++ b/src/netsurf/netsurf.zig @@ -1436,6 +1436,20 @@ pub fn elementGetAttribute(elem: *Element, name: []const u8) !?[]const u8 { return strToData(s.?); } +pub fn elementGetAttributeNS(elem: *Element, ns: []const u8, name: []const u8) !?[]const u8 { + var s: ?*String = undefined; + const err = elementVtable(elem).dom_element_get_attribute_ns.?( + elem, + try strFromData(ns), + try strFromData(name), + &s, + ); + try DOMErr(err); + if (s == null) return null; + + return strToData(s.?); +} + pub fn elementSetAttribute(elem: *Element, qname: []const u8, value: []const u8) !void { const err = elementVtable(elem).dom_element_set_attribute.?( elem, @@ -1445,11 +1459,35 @@ pub fn elementSetAttribute(elem: *Element, qname: []const u8, value: []const u8) try DOMErr(err); } +pub fn elementSetAttributeNS( + elem: *Element, + ns: []const u8, + qname: []const u8, + value: []const u8, +) !void { + const err = elementVtable(elem).dom_element_set_attribute_ns.?( + elem, + try strFromData(ns), + try strFromData(qname), + try strFromData(value), + ); + try DOMErr(err); +} + pub fn elementRemoveAttribute(elem: *Element, qname: []const u8) !void { const err = elementVtable(elem).dom_element_remove_attribute.?(elem, try strFromData(qname)); try DOMErr(err); } +pub fn elementRemoveAttributeNS(elem: *Element, ns: []const u8, qname: []const u8) !void { + const err = elementVtable(elem).dom_element_remove_attribute_ns.?( + elem, + try strFromData(ns), + try strFromData(qname), + ); + try DOMErr(err); +} + pub fn elementHasAttribute(elem: *Element, qname: []const u8) !bool { var res: bool = undefined; const err = elementVtable(elem).dom_element_has_attribute.?(elem, try strFromData(qname), &res);