debug/squish.debug.lua

Sun, 10 Oct 2010 01:32:54 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Sun, 10 Oct 2010 01:32:54 +0100
changeset 74
4a76d75a1456
parent 34
0e34461ab2a6
permissions
-rw-r--r--

squish.gzip.lua: Write code without shebang to temporary file to avoid compressing the shebang and passing it to loadstring


local cs = require "minichunkspy"

local function ___adjust_chunk(chunk, newname, lineshift)
	local c = cs.disassemble(string.dump(chunk));
	c.body.name = newname;

	lineshift = -c.body.line;
	local function shiftlines(c)
		c.line = c.line + lineshift;
		c.last_line = c.last_line + lineshift;
		for i, line in ipairs(c.source_lines) do
			c.source_lines[i] = line+lineshift;
		end
		for i, f in ipairs(c.prototypes) do
			shiftlines(f);
		end
	end
	shiftlines(c.body);

	return assert(loadstring(cs.assemble(c), newname))();
end

mercurial