From 1b9ef93962e1c3e3c90af3f88adf87a0b735508c Mon Sep 17 00:00:00 2001 From: Mark Langen Date: Sat, 22 Sep 2012 23:41:44 -0600 Subject: [PATCH] Minor changes to plugin --- FormatMini.lua | 1 + ParseLua.lua | 12 ++++++------ RobloxMinifyPlugin.lua | 0 RobloxPlugin/Minify.lua | 20 ++++++++++++++------ RobloxPlugin/MinifyToolbar.lua | 7 +++++++ 5 files changed, 28 insertions(+), 12 deletions(-) delete mode 100644 RobloxMinifyPlugin.lua diff --git a/FormatMini.lua b/FormatMini.lua index 886ab12..448ae92 100644 --- a/FormatMini.lua +++ b/FormatMini.lua @@ -117,6 +117,7 @@ function Format_Mini(ast) out = out..formatExpr(expr.Base)..expr.Indexer..expr.Ident.Data elseif expr.AstType == 'Function' then + expr.Scope:RenameVars() out = out.."function(" if #expr.Arguments > 0 then for i = 1, #expr.Arguments do diff --git a/ParseLua.lua b/ParseLua.lua index 1acd629..f6caf70 100644 --- a/ParseLua.lua +++ b/ParseLua.lua @@ -412,8 +412,8 @@ function ParseLua(src) local scope = {} scope.Parent = parent scope.LocalList = {} + scope.LocalMap = {} function scope:RenameVars() - local newList = {} for _, var in pairs(scope.LocalList) do local id; VarUid = 0 @@ -426,15 +426,14 @@ function ParseLua(src) varToUse = (varToUse - d) / #VarDigits id = id..VarDigits[d+1] end - until not GlobalVarGetMap[id] and not parent:GetLocal(id) and not newList[id] + until not GlobalVarGetMap[id] and not parent:GetLocal(id) and not scope.LocalMap[id] var.Name = id - newList[id] = var + scope.LocalMap[id] = var end - scope.LocalList = newList end function scope:GetLocal(name) --first, try to get my variable - local my = scope.LocalList[name] + local my = scope.LocalMap[name] if my then return my end --next, try parent @@ -452,7 +451,8 @@ function ParseLua(src) my.Name = name my.CanRename = true -- - scope.LocalList[name] = my + scope.LocalList[#scope.LocalList+1] = my + scope.LocalMap[name] = my -- return my end diff --git a/RobloxMinifyPlugin.lua b/RobloxMinifyPlugin.lua deleted file mode 100644 index e69de29..0000000 diff --git a/RobloxPlugin/Minify.lua b/RobloxPlugin/Minify.lua index 3417d0a..2167b19 100644 --- a/RobloxPlugin/Minify.lua +++ b/RobloxPlugin/Minify.lua @@ -1,4 +1,11 @@ +-- +-- Minify.lua +-- +-- A compilation of all of the neccesary code to Minify a source file, all into one single +-- script for usage on Roblox. Needed to deal with Roblox' lack of `require`. +-- + function lookupify(tb) for _, v in pairs(tb) do tb[v] = true @@ -455,8 +462,8 @@ function ParseLua(src) local scope = {} scope.Parent = parent scope.LocalList = {} + scope.LocalMap = {} function scope:RenameVars() - local newList = {} for _, var in pairs(scope.LocalList) do local id; VarUid = 0 @@ -469,15 +476,14 @@ function ParseLua(src) varToUse = (varToUse - d) / #VarDigits id = id..VarDigits[d+1] end - until not GlobalVarGetMap[id] and not parent:GetLocal(id) and not newList[id] + until not GlobalVarGetMap[id] and not parent:GetLocal(id) and not scope.LocalMap[id] var.Name = id - newList[id] = var + scope.LocalMap[id] = var end - scope.LocalList = newList end function scope:GetLocal(name) --first, try to get my variable - local my = scope.LocalList[name] + local my = scope.LocalMap[name] if my then return my end --next, try parent @@ -495,7 +501,8 @@ function ParseLua(src) my.Name = name my.CanRename = true -- - scope.LocalList[name] = my + scope.LocalList[#scope.LocalList+1] = my + scope.LocalMap[name] = my -- return my end @@ -1344,6 +1351,7 @@ function Format_Mini(ast) out = out..formatExpr(expr.Base)..expr.Indexer..expr.Ident.Data elseif expr.AstType == 'Function' then + expr.Scope:RenameVars() out = out.."function(" if #expr.Arguments > 0 then for i = 1, #expr.Arguments do diff --git a/RobloxPlugin/MinifyToolbar.lua b/RobloxPlugin/MinifyToolbar.lua index ef78248..548dfb3 100644 --- a/RobloxPlugin/MinifyToolbar.lua +++ b/RobloxPlugin/MinifyToolbar.lua @@ -1,4 +1,11 @@ +-- +-- MinifyToolbar.lua +-- +-- The main script that generates a toolbar for studio that allows minification of selected +-- scripts, calling on the _G.Minify function defined in `Minify.lua` +-- + local plugin = PluginManager():CreatePlugin() local toolbar = plugin:CreateToolbar("Minify") local minifyButton = toolbar:CreateButton("", "Minify Selected Script", 'MinifyButtonIcon.png')