dom: add attributeNS funcs

This commit is contained in:
Pierre Tachoire
2024-06-21 16:53:19 +02:00
parent 94e47f4f35
commit c9cfb1ecba
2 changed files with 50 additions and 0 deletions

View File

@@ -138,14 +138,26 @@ pub const Element = struct {
return try parser.elementGetAttribute(self, qname); 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 { pub fn _setAttribute(self: *parser.Element, qname: []const u8, value: []const u8) !void {
return try parser.elementSetAttribute(self, qname, value); 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 { pub fn _removeAttribute(self: *parser.Element, qname: []const u8) !void {
return try parser.elementRemoveAttribute(self, qname); 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 { pub fn _hasAttribute(self: *parser.Element, qname: []const u8) !bool {
return try parser.elementHasAttribute(self, qname); return try parser.elementHasAttribute(self, qname);
} }

View File

@@ -1436,6 +1436,20 @@ pub fn elementGetAttribute(elem: *Element, name: []const u8) !?[]const u8 {
return strToData(s.?); 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 { pub fn elementSetAttribute(elem: *Element, qname: []const u8, value: []const u8) !void {
const err = elementVtable(elem).dom_element_set_attribute.?( const err = elementVtable(elem).dom_element_set_attribute.?(
elem, elem,
@@ -1445,11 +1459,35 @@ pub fn elementSetAttribute(elem: *Element, qname: []const u8, value: []const u8)
try DOMErr(err); 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 { pub fn elementRemoveAttribute(elem: *Element, qname: []const u8) !void {
const err = elementVtable(elem).dom_element_remove_attribute.?(elem, try strFromData(qname)); const err = elementVtable(elem).dom_element_remove_attribute.?(elem, try strFromData(qname));
try DOMErr(err); 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 { pub fn elementHasAttribute(elem: *Element, qname: []const u8) !bool {
var res: bool = undefined; var res: bool = undefined;
const err = elementVtable(elem).dom_element_has_attribute.?(elem, try strFromData(qname), &res); const err = elementVtable(elem).dom_element_has_attribute.?(elem, try strFromData(qname), &res);