Quantcast

Converted parseLine to return a table

Kevin Lyles [04-24-10 - 06:28]
Converted parseLine to return a table
Filename
Regexps.lua
WeightsWatcher.lua
diff --git a/Regexps.lua b/Regexps.lua
index 179eee3..1d40a0b 100644
--- a/Regexps.lua
+++ b/Regexps.lua
@@ -825,7 +825,7 @@ SingleStatLines = {
 			if start then
 				local stats = WeightsWatcher.parseStats("-" .. value .. " " .. name)
 				if stats then
-					return stats
+					return stats.stats
 				end
 			end
 		end},
@@ -835,7 +835,7 @@ SingleStatLines = {
 			if start then
 				local stats = WeightsWatcher.parseStats("-" .. value .. " " .. name)
 				if stats then
-					return stats
+					return stats.stats
 				end
 			end
 		end},
@@ -847,7 +847,7 @@ SingleStatLines = {
 			if start then
 				local stats = WeightsWatcher.parseStats(value .. " " .. name)
 				if stats then
-					return stats
+					return stats.stats
 				end
 			end
 		end},
diff --git a/WeightsWatcher.lua b/WeightsWatcher.lua
index f508594..d278e10 100644
--- a/WeightsWatcher.lua
+++ b/WeightsWatcher.lua
@@ -946,13 +946,13 @@ function WeightsWatcher.parseLine(textL, textR, link)
 	if start then
 		local socketBonusStat = WeightsWatcher.singleStat(value)
 		if socketBonusStat then
-			return nil, nil, nil, socketBonusStat
+			return {socketBonusStat = socketBonusStat}
 		end
 	end
 	for _, regex in ipairs(SocketLines) do
 		local start, _, value = string.find(textL, regex)
 		if start then
-			return nil, nil, value
+			return {socket = value}
 		end
 	end
 	for _, regex in ipairs(IgnoredLines) do
@@ -969,7 +969,7 @@ function WeightsWatcher.parseLine(textL, textR, link)
 	end
 	for _, regex in ipairs(ItemInfoLines) do
 		if string.find(textL, regex) then
-			return nil, {[textL] = true}
+			return {info = {[textL] = true}}
 		end
 	end
 	for _, regex in ipairs(DoubleSlotLines) do
@@ -977,17 +977,17 @@ function WeightsWatcher.parseLine(textL, textR, link)
 			local nonStats = {}
 			nonStats["slot"] = textL
 			nonStats["subslot"] = textR
-			return nil, nonStats
+			return {info = nonStats}
 		end
 	end
 	for _, regex in ipairs(SingleSlotLines) do
 		if string.find(textL, regex) then
-			return nil, {["slot"] = textL}
+			return {info = {["slot"] = textL}}
 		end
 	end
 	local stats = WeightsWatcher.damageRange(textL, textR)
 	if stats then
-		return stats
+		return {stats = stats}
 	end

 	for _, args in ipairs(EffectHandlers) do
@@ -1020,19 +1020,19 @@ function WeightsWatcher.parseStats(text)
 		if string.find(text, pattern) then
 			local stats = func(text, pattern)
 			if stats then
-				return stats
+				return {stats = stats}
 			end
 		end
 	end
 	local stat = WeightsWatcher.singleStat(text)
 	if stat then
-		return stat
+		return {stats = stat}
 	end
 end

 function WeightsWatcher.getItemStats(link)
 	local textL, textR, pattern, func, start
-	local normalStats, nonStats, socketList, socketBonusStat = WeightsWatcher.newStatTable(), {}, {}
+	local normalStats, nonStats, socketList, socketBonusStat = WeightsWatcher.newStatTable(), {}, {}, WeightsWatcher.newStatTable()
 	local ranged = false

 	-- Populate hidden tooltip
@@ -1053,21 +1053,22 @@ function WeightsWatcher.getItemStats(link)
 			textR = textR:lower()
 		end

-		local stats, unStats, socket, socketBonus = WeightsWatcher.parseLine(textL, textR, link)
-
+		local stats = WeightsWatcher.parseLine(textL, textR, link)
 		if stats then
-			normalStats = normalStats + stats
-		end
-		if unStats then
-			for name, value in pairs(unStats) do
-				nonStats[name] = value
+			if stats.stats then
+				normalStats = normalStats + stats.stats
+			end
+			if stats.info then
+				for name, value in pairs(stats.info) do
+					nonStats[name] = value
+				end
+			end
+			if stats.socket then
+				table.insert(socketList, stats.socket)
+			end
+			if stats.socketBonusStat then
+				socketBonusStat = socketBonusStat + stats.socketBonusStat
 			end
-		end
-		if socket then
-			table.insert(socketList, socket)
-		end
-		if socketBonus then
-			socketBonusStat = socketBonus
 		end
 	end