From 5fa6df560a53f7181cfaee9ab09e133e8bb3fe23 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Mon, 24 Jan 2011 13:35:59 +0000 Subject: [PATCH] Fixed slash commands for /way reset and /way --- TomTom.lua | 74 ++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index ffffe60..11f958e 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -1089,12 +1089,11 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) for token in msg:gmatch("%S+") do table.insert(tokens, token) end -- Lower the first token - if tokens[1] then - tokens[1] = tokens[1]:lower() - end + local ltoken = tokens[1] and tokens[1]:lower() - if tokens[1] == "reset" then - if tokens[2] == "all" then + if ltoken == "reset" then + local ltoken2 = tokens[2] and tokens[2]:lower() + if ltoken2 == "all" then if TomTom.db.profile.general.confirmremoveall then StaticPopup_Show("TOMTOM_REMOVE_ALL_CONFIRM") else @@ -1105,12 +1104,12 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) elseif tokens[2] then -- Reset the named zone local zone = table.concat(tokens, " ", 2) + -- Find a fuzzy match for the zone - -- Find a fuzzy match for the zone local matches = {} - lzone = zone:lower():gsub("[%L%S%D]", "") + lzone = zone:lower():gsub("^[%l%s%d]", "") - for name,mapId in pairs(nameToMapId) do + for name, mapId in pairs(nameToMapId) do local lname = name:lower() if lname:match(lzone) then table.insert(matches, name) @@ -1126,24 +1125,30 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) ChatFrame1:AddMessage(string.format(L["Found multiple matches for zone '%s'. Did you mean: %s"], zone, table.concat(matches, ", "))) return - end + elseif #matches == 0 then + local msg = string.format(L["Could not find any matches for zone %s."], zone) + ChatFrame1:AddMessage(msg) + end local zoneName = matches[1] local mapId = nameToMapId[zoneName] - if waypoints[mapId] then - for key, uid in pairs(waypoints[mapId]) do - TomTom:RemoveWaypoint(uid) - end - else - ChatFrame1:AddMessage(L["There were no waypoints to remove in %s"]:format(zoneName)) - end - end - elseif tokens[1] and not tonumber(tokens[1]) then - -- Find the first numeric token - local zoneEnd = 1 - for idx = 1, #tokens do - local token = tokens[idx] + local numRemoved = 0 + if waypoints[mapId] then + for key, uid in pairs(waypoints[mapId]) do + TomTom:RemoveWaypoint(uid) + numRemoved = numRemoved + 1 + end + ChatFrame1:AddMessage(L["Removed %d waypoints from %s"]:format(numRemoved, zoneName)) + else + ChatFrame1:AddMessage(L["There were no waypoints to remove in %s"]:format(zoneName)) + end + end + elseif tokens[1] and not tonumber(tokens[1]) then + -- Find the first numeric token + local zoneEnd + for idx = 1, #tokens do + local token = tokens[idx] if tonumber(token) then -- We've encountered a number, so the zone name must have -- ended at the prior token @@ -1151,9 +1156,14 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) end end + if not zoneEnd then + usage() + return + end + -- This is a waypoint set, with a zone before the coords - local zone = table.concat(tokens, " ", 1, zoneEnd) - local x,y,desc = select(zoneEnd + 1, unpack(tokens)) + local zone = table.concat(tokens, " ", 1, zoneEnd - 1) + local x,y,desc = select(zoneEnd, unpack(tokens)) if desc then desc = table.concat(tokens, " ", zoneEnd + 3) end @@ -1176,17 +1186,21 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) local msg = string.format(L["Found multiple matches for zone '%s'. Did you mean: %s"], zone, table.concat(matches, ", ")) ChatFrame1:AddMessage(msg) return - end + elseif #matches == 0 then + local msg = string.format(L["Could not find any matches for zone %s."], zone) + ChatFrame1:AddMessage(msg) + end -- There was only one match, so proceed local zoneName = matches[1] local mapId = nameToMapId[zoneName] - if not x or not tonumber(x) then - return usage() - elseif not y or not tonumber(y) then - return usage() - end + x = x and tonumber(x) + y = y and tonumber(y) + + if not x or not y then + return usage() + end x = tonumber(x) y = tonumber(y) -- 1.7.9.5