equal
deleted
inserted
replaced
1 --luacheck: globals meta idsafe |
1 --luacheck: globals meta idsafe |
2 local condition_handlers = {}; |
2 local condition_handlers = {}; |
3 |
3 |
4 local jid = require "util.jid"; |
4 local jid = require "util.jid"; |
|
5 |
|
6 -- Helper to convert user-input strings (yes/true//no/false) to a bool |
|
7 local function string_to_boolean(s) |
|
8 s = s:lower(); |
|
9 return s == "yes" or s == "true"; |
|
10 end |
5 |
11 |
6 -- Return a code string for a condition that checks whether the contents |
12 -- Return a code string for a condition that checks whether the contents |
7 -- of variable with the name 'name' matches any of the values in the |
13 -- of variable with the name 'name' matches any of the values in the |
8 -- comma/space/pipe delimited list 'values'. |
14 -- comma/space/pipe delimited list 'values'. |
9 local function compile_comparison_list(name, values) |
15 local function compile_comparison_list(name, values) |
86 return zone_check(zone, "to"); |
92 return zone_check(zone, "to"); |
87 end |
93 end |
88 |
94 |
89 function condition_handlers.LEAVING(zone) |
95 function condition_handlers.LEAVING(zone) |
90 return zone_check(zone, "from"); |
96 return zone_check(zone, "from"); |
|
97 end |
|
98 |
|
99 function condition_handlers.IN_ROSTER(yes_no) |
|
100 local in_roster_requirement = string_to_boolean(yes_no); |
|
101 return "not "..(in_roster_requirement and "not" or "").." roster_entry", { "roster_entry" }; |
|
102 end |
|
103 |
|
104 function condition_handlers.IN_ROSTER_GROUP(group) |
|
105 return ("not not (roster_entry and roster_entry.groups[%q])"):format(group), { "roster_entry" }; |
91 end |
106 end |
92 |
107 |
93 function condition_handlers.PAYLOAD(payload_ns) |
108 function condition_handlers.PAYLOAD(payload_ns) |
94 return ("stanza:get_child(nil, %q)"):format(payload_ns); |
109 return ("stanza:get_child(nil, %q)"):format(payload_ns); |
95 end |
110 end |