Mercurial > wow > askmrrobot
annotate sort.lua @ 9:880a7273759f v1.2.12.0
curse
author | Adam tegen <adam.tegen@gmail.com> |
---|---|
date | Wed, 21 May 2014 00:00:33 -0500 |
parents | ec731d2fe6ba |
children | e77e01abce98 |
rev | line source |
---|---|
adam@0 | 1 local _, AskMrRobot = ... |
adam@0 | 2 |
adam@0 | 3 function AskMrRobot.spairs(t, order) |
adam@0 | 4 -- collect the keys |
adam@0 | 5 local keys = {} |
adam@0 | 6 for k in pairs(t) do keys[#keys+1] = k end |
adam@0 | 7 |
adam@0 | 8 -- if order function given, sort by it by passing the table and keys a, b, |
adam@0 | 9 -- otherwise just sort the keys |
adam@0 | 10 if order then |
adam@0 | 11 table.sort(keys, function(a,b) return order(t, a, b) end) |
adam@0 | 12 else |
adam@0 | 13 table.sort(keys) |
adam@0 | 14 end |
adam@0 | 15 |
adam@0 | 16 -- return the iterator function |
adam@0 | 17 local i = 0 |
adam@0 | 18 return function() |
adam@0 | 19 i = i + 1 |
adam@0 | 20 if keys[i] then |
adam@0 | 21 return keys[i], t[keys[i]] |
adam@0 | 22 end |
adam@0 | 23 end |
adam@0 | 24 end |
adam@0 | 25 |
adam@0 | 26 function AskMrRobot.sortSlots(t) |
adam@0 | 27 return AskMrRobot.spairs(t, function(x, a, b) |
adam@0 | 28 if a == nil and b == nil then return 0 end |
adam@0 | 29 return AskMrRobot.sortedSlots[a] < AskMrRobot.sortedSlots[b] |
adam@0 | 30 end) |
adam@0 | 31 end |