Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 2524:0404476ecfe3
mod_firewall: More meta() enhancements
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 20 Feb 2017 09:28:35 +0000 |
| parents | c6fd8975704b |
| children | a35d85cfda92 |
comparison
equal
deleted
inserted
replaced
| 2523:a3a18d09ae8a | 2524:0404476ecfe3 |
|---|---|
| 83 code = attr_name; | 83 code = attr_name; |
| 84 table.insert(deps, attr_name); | 84 table.insert(deps, attr_name); |
| 85 else | 85 else |
| 86 code = "stanza.attr["..("%q"):format(attr_name).."]"; | 86 code = "stanza.attr["..("%q"):format(attr_name).."]"; |
| 87 end | 87 end |
| 88 elseif expr:match("^%w+#$") then | |
| 89 code = ("stanza:get_child_text(%q)"):format(expr:sub(1, -2)); | |
| 88 else | 90 else |
| 89 code = "(stanza:find("..("%q"):format(expr)..") or "..("%q"):format("<undefined>")..")"; | 91 code = ("stanza:find(%q)"):format(expr); |
| 90 end | 92 end |
| 91 if func_chain then | 93 if func_chain then |
| 92 for func_name in func_chain:gmatch("|(%w+)") do | 94 for func_name in func_chain:gmatch("|(%w+)") do |
| 93 if code == "to" or code == "from" then | 95 if code == "to" or code == "from" then |
| 94 if func_name == "bare" then | 96 if func_name == "bare" then |
| 109 end | 111 end |
| 110 end | 112 end |
| 111 end | 113 end |
| 112 end | 114 end |
| 113 end | 115 end |
| 114 return "\"..(("..code..") or \"<undefined>\")..\""; | 116 return "\"..tostring(("..code..") or \"<undefined>\")..\""; |
| 115 end) | 117 end) |
| 116 :gsub("$$(%a+)", extra or {}) | 118 :gsub("$$(%a+)", extra or {}) |
| 117 :gsub([[^""%.%.]], "") | 119 :gsub([[^""%.%.]], "") |
| 118 :gsub([[%.%.""$]], "")); | 120 :gsub([[%.%.""$]], "")); |
| 119 end | 121 end |
