diff options
Diffstat (limited to 'src/LuaMinify.h')
| -rw-r--r-- | src/LuaMinify.h | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/LuaMinify.h b/src/LuaMinify.h index 4990646..76d7759 100644 --- a/src/LuaMinify.h +++ b/src/LuaMinify.h | |||
| @@ -298,8 +298,12 @@ local Scope = { | |||
| 298 | 298 | ||
| 299 | ObfuscateLocals = function(self, recommendedMaxLength, validNameChars) | 299 | ObfuscateLocals = function(self, recommendedMaxLength, validNameChars) |
| 300 | for i, var in pairs(self.Locals) do | 300 | for i, var in pairs(self.Locals) do |
| 301 | local id = GetUnique(self) | 301 | if var.Name == "_ENV" then |
| 302 | self:RenameLocal(var.Name, id) | 302 | self:RenameLocal(var.Name, "_ENV") |
| 303 | else | ||
| 304 | local id = GetUnique(self) | ||
| 305 | self:RenameLocal(var.Name, id) | ||
| 306 | end | ||
| 303 | end | 307 | end |
| 304 | end | 308 | end |
| 305 | } | 309 | } |
| @@ -1502,13 +1506,24 @@ R"lua_codes( | |||
| 1502 | 1506 | ||
| 1503 | elseif tok:ConsumeKeyword('local', tokenList) then | 1507 | elseif tok:ConsumeKeyword('local', tokenList) then |
| 1504 | if tok:Is('Ident') then | 1508 | if tok:Is('Ident') then |
| 1505 | local varList = { tok:Get(tokenList).Data } | 1509 | local varList, attrList = {}, {} |
| 1506 | while tok:ConsumeSymbol(',', tokenList) do | 1510 | repeat |
| 1507 | if not tok:Is('Ident') then | 1511 | if not tok:Is('Ident') then |
| 1508 | return false, GenerateError("local var name expected") | 1512 | return false, GenerateError("local var name expected") |
| 1509 | end | 1513 | end |
| 1510 | varList[#varList+1] = tok:Get(tokenList).Data | 1514 | varList[#varList+1] = tok:Get(tokenList).Data |
| 1511 | end | 1515 | if tok:ConsumeSymbol('<', tokenList) then |
| 1516 | if not tok:Is('Ident') then | ||
| 1517 | return false, GenerateError("attrib name expected") | ||
| 1518 | end | ||
| 1519 | attrList[#attrList+1] = tok:Get(tokenList).Data | ||
| 1520 | if not tok:ConsumeSymbol('>', tokenList) then | ||
| 1521 | return false, GenerateError("missing '>' to close attrib name") | ||
| 1522 | end | ||
| 1523 | else | ||
| 1524 | attrList[#attrList+1] = false | ||
| 1525 | end | ||
| 1526 | until not tok:ConsumeSymbol(',', tokenList) | ||
| 1512 | 1527 | ||
| 1513 | local initList = {} | 1528 | local initList = {} |
| 1514 | if tok:ConsumeSymbol('=', tokenList) then | 1529 | if tok:ConsumeSymbol('=', tokenList) then |
| @@ -1529,6 +1544,7 @@ R"lua_codes( | |||
| 1529 | local nodeLocal = {} | 1544 | local nodeLocal = {} |
| 1530 | nodeLocal.AstType = 'LocalStatement' | 1545 | nodeLocal.AstType = 'LocalStatement' |
| 1531 | nodeLocal.LocalList = varList | 1546 | nodeLocal.LocalList = varList |
| 1547 | nodeLocal.AttrList = attrList | ||
| 1532 | nodeLocal.InitList = initList | 1548 | nodeLocal.InitList = initList |
| 1533 | nodeLocal.Tokens = tokenList | 1549 | nodeLocal.Tokens = tokenList |
| 1534 | -- | 1550 | -- |
| @@ -1923,8 +1939,11 @@ local function Format_Mini(ast) | |||
| 1923 | out = out.."local " | 1939 | out = out.."local " |
| 1924 | for i = 1, #statement.LocalList do | 1940 | for i = 1, #statement.LocalList do |
| 1925 | out = out..statement.LocalList[i].Name | 1941 | out = out..statement.LocalList[i].Name |
| 1926 | if i ~= #statement.LocalList then | 1942 | if statement.AttrList[i] then |
| 1927 | out = out.."," | 1943 | out = out.."<"..statement.AttrList[i]..">" |
| 1944 | if i == #statement.LocalList then | ||
| 1945 | out = out.." " | ||
| 1946 | end | ||
| 1928 | end | 1947 | end |
| 1929 | end | 1948 | end |
| 1930 | if #statement.InitList > 0 then | 1949 | if #statement.InitList > 0 then |
