plugins/xkcd.lua

changeset 65
25f4445447b2
parent 64
a317a5d4340c
child 66
bdaf81ab55ad
equal deleted inserted replaced
64:a317a5d4340c 65:25f4445447b2
35 function handle_xkcd_command(command) 35 function handle_xkcd_command(command)
36 local xkcdnum = command.param; 36 local xkcdnum = command.param;
37 if not xkcdnum then return "Please supply an XKCD number or a search string :)"; end 37 if not xkcdnum then return "Please supply an XKCD number or a search string :)"; end
38 if not tonumber(xkcdnum) then -- Search for an xkcd 38 if not tonumber(xkcdnum) then -- Search for an xkcd
39 xkcdnum = xkcdnum:gsub("[()]", function(s) return "%" .. s end) 39 xkcdnum = xkcdnum:gsub("[()]", function(s) return "%" .. s end)
40 :lower()
40 :gsub("[%[]",function(s) return "%" .. s end) 41 :gsub("[%[]",function(s) return "%" .. s end)
41 :gsub("%%(%b[])",function(s) return (#s > 2 and "" or "%") .. s end); 42 :gsub("%%(%b[])",function(s) return (#s > 2 and "" or "%") .. s end);
42 local results = {}; 43 local results = {};
43 for x, xkcd in pairs(xkcd_list) do 44 for x, xkcd in pairs(xkcd_list) do
44 name = xkcd:lower() 45 name = xkcd:lower()
45 if name:match(xkcdnum:lower()) then 46 if name == xkcdnum then -- exact match
47 return xkcd..", http://xkcd.org/"..x.."/";
48 elseif name:match(xkcdnum) then
46 table.insert(results, x); 49 table.insert(results, x);
47 --return commands.xkcd(msg, x); 50 --return commands.xkcd(msg, x);
48 end 51 end
49 end 52 end
50 if #results == 0 then 53 if #results == 0 then

mercurial