Diff

util/stanza.lua @ 12636:e8934ce6ea0f

util.stanza: Add method for extracting a single attribute value Sometimes you only care about a single attribute, but the child tag itself may be optional, leading to needing `tag and tag.attr.foo` or `stanza:find("tag@foo")`. The `:find()` method is fairly complex, so avoiding it for this kind of simpler use case is a win.
author Kim Alvefur <zash@zash.se>
date Wed, 17 Aug 2022 19:04:30 +0200
parent 12407:b6b01724e04f
child 12687:5b69ecaf3427
line wrap: on
line diff
--- a/util/stanza.lua	Mon Aug 15 16:35:14 2022 +0200
+++ b/util/stanza.lua	Wed Aug 17 19:04:30 2022 +0200
@@ -176,6 +176,14 @@
 	return nil;
 end
 
+function stanza_mt:get_child_attr(name, xmlns, attr)
+	local tag = self:get_child(name, xmlns);
+	if tag then
+		return tag.attr[attr];
+	end
+	return nil;
+end
+
 function stanza_mt:child_with_name(name)
 	for _, child in ipairs(self.tags) do
 		if child.name == name then return child; end