diff --git a/WeakAuras/Conditions.lua b/WeakAuras/Conditions.lua index 3a66c28..e72e3f0 100644 --- a/WeakAuras/Conditions.lua +++ b/WeakAuras/Conditions.lua @@ -167,7 +167,7 @@ local function CreateTestForCondition(uid, input, allConditionsTemplate, usedSta local preamble = conditionTemplate and conditionTemplate.preamble; local stateCheck = "state[" .. trigger .. "] and state[" .. trigger .. "].show and "; - local stateVariableCheck = "state[" .. trigger .. "]." .. variable .. "~= nil and "; + local stateVariableCheck = string.format("state[" .. trigger .. "][%q]", variable) .. "~= nil and "; local preambleString @@ -208,35 +208,35 @@ local function CreateTestForCondition(uid, input, allConditionsTemplate, usedSta elseif (cType == "number" and value and op) then local v = tonumber(value) if (v) then - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. op .. v; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. op .. v; end elseif (cType == "timer" and value and op) then if (op == "==") then - check = stateCheck .. stateVariableCheck .. "abs(state[" .. trigger .. "]." ..variable .. "- now -" .. value .. ") < 0.05"; + check = stateCheck .. stateVariableCheck .. "abs(state[" .. trigger .. "]" .. string.format("[%q]", variable) .. "- now -" .. value .. ") < 0.05"; else - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. "- now" .. op .. value; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. "- now" .. op .. value; end elseif (cType == "select" and value and op) then if (tonumber(value)) then - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. op .. tonumber(value); + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. op .. tonumber(value); else - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. op .. "'" .. value .. "'"; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]".. string.format("[%q]", variable) .. op .. "'" .. value .. "'"; end elseif (cType == "bool" and value) then local rightSide = value == 0 and "false" or "true"; - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. "==" .. rightSide + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. "==" .. rightSide elseif (cType == "string" and value) then if(op == "==") then - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. " == [[" .. value .. "]]"; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. " == [[" .. value .. "]]"; elseif (op == "find('%s')") then - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. ":find([[" .. value .. "]], 1, true)"; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. ":find([[" .. value .. "]], 1, true)"; elseif (op == "match('%s')") then - check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]." .. variable .. ":match([[" .. value .. "]], 1, true)"; + check = stateCheck .. stateVariableCheck .. "state[" .. trigger .. "]" .. string.format("[%q]", variable) .. ":match([[" .. value .. "]], 1, true)"; end end if (cType == "timer" and value) then - recheckCode = " nextTime = state[" .. trigger .. "] and state[" .. trigger .. "]." .. variable .. " and (state[" .. trigger .. "]." .. variable .. " -" .. value .. ")\n"; + recheckCode = " nextTime = state[" .. trigger .. "] and state[" .. trigger .. "]" .. string.format("[%q]", variable) .. " and (state[" .. trigger .. "]" .. string.format("[%q]", variable) .. " -" .. value .. ")\n"; recheckCode = recheckCode .. " if (nextTime and (not recheckTime or nextTime < recheckTime) and nextTime >= now) then\n" recheckCode = recheckCode .. " recheckTime = nextTime\n"; recheckCode = recheckCode .. " end\n"