|
Shmuel Zeigerman wrote:
David Given wrote:My point is that field names are not just arbitrary symbols (like local variable names). They're actually *data*, which your program may need to process, and therefore changing them will break your program.I can see your point. This may possibly be considered as a special case for the obfuscator to handle. The obfuscator can be made smart! :)
After a second thought: this doesn't have to be special case. The obfuscator can build a table putting in there all the string keys and all the string values (may be excluding those involved with `require'). Then it replaces all those strings with their obfuscated counterparts.
That way: d = { one = 1, [1] = "one", two = 2, [2] = "two", } will become: a1 = { ["a2"] = 1, [1] = "a2", ["a3"] = 2, [2] = "a3", } -- Shmuel