From 00584c4d610a381e4181ab438102420aa601f310 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 17 Nov 2024 12:35:51 +0100 Subject: util.stanza: Handle namespace prefixes for attributes in :find() More correct handling of namespaces here. This works with both prefixes from the parser and hacky .attr["foo:bar"] --- util/stanza.lua | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'util/stanza.lua') diff --git a/util/stanza.lua b/util/stanza.lua index 77110470..325c494e 100644 --- a/util/stanza.lua +++ b/util/stanza.lua @@ -277,6 +277,10 @@ function stanza_mt:find(path) local xmlns, name, text; local char = s_sub(path, pos, pos); if char == "@" then + local prefix, attr = s_match(path, "^([^:]+):(.*)", pos+1); + if prefix and self.namespaces and self.namespaces[prefix] then + return self.attr[self.namespaces[prefix] .. "\1" .. attr]; + end return self.attr[s_sub(path, pos + 1)]; elseif char == "{" then xmlns, pos = s_match(path, "^([^}]+)}()", pos + 1); -- cgit v1.2.3