Software /
code /
prosody
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