Quantcast

Sorting should work now

Erik L. Vonderscheer [07-30-09 - 05:47]
Sorting should work now
Filename
TradeFilter3.lua
TradeFilter3Options.lua
diff --git a/TradeFilter3.lua b/TradeFilter3.lua
index d22843f..c0f8c2e 100644
--- a/TradeFilter3.lua
+++ b/TradeFilter3.lua
@@ -45,10 +45,13 @@ TF3.date = string.sub("$Date: @file-date-iso@ $", 8, 17)

 --[[ Locals ]]--
 local ipairs = ipairs
+local pairs = pairs
 local find = string.find
 local sub = string.gsub
 local lower = string.lower
 local formatIt = string.format
+local insert = table.insert
+local sort = table.sort
 local timerCount = 0
 local repeatdata = {}
 local currentFriend
@@ -238,24 +241,6 @@ function TF3:RecycleTables(t, state)
 	end
 end

-function TF3:pairsByKeys(t, f)
-  local a = {}
-  for n in pairs(t) do
-		table.insert(a, n)
-	end
-	table.sort(a, f)
-  local i = 0      -- iterator variable
-  local iter = function()   -- iterator function
-		i = i + 1
-		if a[i] == nil then
-			return nil
-		else
-			return a[i], t[a[i]]
-    end
-	end
-	return iter
-end
-
 --[[ Friends Functions ]]--
 function TF3:GetFriends()
 	local friends = TF3.db.profile.friendslist
diff --git a/TradeFilter3Options.lua b/TradeFilter3Options.lua
index 5f83b11..99f9ccd 100644
--- a/TradeFilter3Options.lua
+++ b/TradeFilter3Options.lua
@@ -7,6 +7,12 @@ local TradeFilter3 = LibStub("AceAddon-3.0"):GetAddon("TradeFilter3")
 local L = LibStub("AceLocale-3.0"):GetLocale("TradeFilter3")
 local TF3 = TradeFilter3

+--[[ Locals ]]--
+local ipairs = ipairs
+local pairs = pairs
+local insert = table.insert
+local sort = table.sort
+
 --[[ Options Table ]]--
 options = {
 	type="group",
@@ -144,11 +150,16 @@ options = {
 							desc = L["SPCSTD"],
 							usage = L["INPUSAGE"],
 							get = function(info)
+								local a = {}
 								local ret = ""
 								if (TF3.db.profile.filters.SPECIAL == nil) then
 									TF3.db.profile.filters.SPECIAL = L.FILTERS.SPECIAL
 								end
-								for k,v in TF3:pairsByKeys(TF3.db.profile.filters.SPECIAL) do
+								for _,v in pairs(TF3.db.profile.filters.SPECIAL) do
+									insert(a, v)
+								end
+								sort(a)
+								for _,v in ipairs(a) do
 									if ret == "" then
 										ret = v
 									else
@@ -209,11 +220,16 @@ options = {
 							desc = L["BTFD"],
 							usage = L["INPUSAGE"],
 							get = function(info)
+								local a = {}
 								local ret = ""
 								if (TF3.db.profile.filters.TRADE == nil) then
 									TF3.db.profile.filters.TRADE = L.FILTERS.TRADE
 								end
-								for k,v in TF3:pairsByKeys(TF3.db.profile.filters.TRADE) do
+								for _,v in pairs(TF3.db.profile.filters.TRADE) do
+									table.insert(a, v)
+								end
+								sort(a)
+								for _,v in ipairs(a) do
 									if ret == "" then
 										ret = v
 									else
@@ -258,11 +274,16 @@ options = {
 							desc = L["BCFD"],
 							usage = L["INPUSAGE"],
 							get = function(info)
+								local a = {}
 								local ret = ""
 								if (TF3.db.profile.filters.BASE == nil) then
 									TF3.db.profile.filters.BASE = L.FILTERS.BASE
 								end
-								for k,v in TF3:pairsByKeys(TF3.db.profile.filters.BASE) do
+								for _,v in pairs(TF3.db.profile.filters.BASE) do
+									table.insert(a, v)
+								end
+								sort(a)
+								for _,v in ipairs(a) do
 									if ret == "" then
 										ret = v
 									else
@@ -336,11 +357,16 @@ options = {
 							name = L["bLists"],
 							usage = L["INPUSAGE"],
 							get = function(info)
+								local a = {}
 								local ret = ""
 								if (TF3.db.profile.blacklist == nil) then
 									TF3.db.profile.blacklist = L.BLACKLIST
 								end
-								for k,v in TF3:pairsByKeys(TF3.db.profile.blacklist) do
+								for _,v in pairs(TF3.db.profile.blacklist) do
+									table.insert(a, v)
+								end
+								sort(a)
+								for _,v in ipairs(a) do
 									if ret == "" then
 										ret = v
 									else
@@ -411,11 +437,16 @@ options = {
 							name = L["wLists"],
 							usage = L["INPUSAGE"],
 							get = function(info)
+								local a = {}
 								local ret = ""
 								if (TF3.db.profile.whitelist == nil) then
 									TF3.db.profile.whitelist = L.WHITELIST
 								end
-								for k,v in TF3:pairsByKeys(TF3.db.profile.whitelist) do
+								for _,v in pairs(TF3.db.profile.whitelist) do
+									table.insert(a, v)
+								end
+								sort(a)
+								for _,v in ipairs(a) do
 									if ret == "" then
 										ret = v
 									else