-- This code is public domain -- Like pairs() but sorted function sPairs(inTable, sFunc) if not sFunc then sFunc = function(a, b) local ta = type(a) local tb = type(b) if(ta == tb) then if ta == 'number' then return a < b end return tostring(a) < tostring(b) end return ta < tb end end local keyList = {} local index = 1 for k,_ in pairs(inTable) do table.insert(keyList,k) end table.sort(keyList, sFunc) return function() key = keyList[index] index = index + 1 return key, inTable[key] end end