aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2022-08-17 19:04:30 +0200
committerKim Alvefur <zash@zash.se>2022-08-17 19:04:30 +0200
commit8959868a28fb74e55ce41a9cb93d7e3524c7dc2b (patch)
treee167e55ba83a8eb91210348f33a042d84ef34daf /util
parent2294d8b8e08fbf75985bd976bc32c79293a478ef (diff)
downloadprosody-8959868a28fb74e55ce41a9cb93d7e3524c7dc2b.tar.gz
prosody-8959868a28fb74e55ce41a9cb93d7e3524c7dc2b.zip
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.
Diffstat (limited to 'util')
-rw-r--r--util/stanza.lua8
1 files changed, 8 insertions, 0 deletions
diff --git a/util/stanza.lua b/util/stanza.lua
index a14be5f0..b75a1f32 100644
--- a/util/stanza.lua
+++ b/util/stanza.lua
@@ -176,6 +176,14 @@ function stanza_mt:get_child_text(name, xmlns)
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