diff options
author | Kim Alvefur <zash@zash.se> | 2022-08-17 19:04:30 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2022-08-17 19:04:30 +0200 |
commit | 8959868a28fb74e55ce41a9cb93d7e3524c7dc2b (patch) | |
tree | e167e55ba83a8eb91210348f33a042d84ef34daf /util | |
parent | 2294d8b8e08fbf75985bd976bc32c79293a478ef (diff) | |
download | prosody-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.lua | 8 |
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 |