debug/squish.debug.lua

Mon, 27 Jul 2009 03:32:13 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 27 Jul 2009 03:32:13 +0100
changeset 34
0e34461ab2a6
permissions
-rw-r--r--

Add new debug extension

34
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local cs = require "minichunkspy"
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local function ___adjust_chunk(chunk, newname, lineshift)
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 local c = cs.disassemble(string.dump(chunk));
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 c.body.name = newname;
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 lineshift = -c.body.line;
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local function shiftlines(c)
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 c.line = c.line + lineshift;
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 c.last_line = c.last_line + lineshift;
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 for i, line in ipairs(c.source_lines) do
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 c.source_lines[i] = line+lineshift;
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 end
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 for i, f in ipairs(c.prototypes) do
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 shiftlines(f);
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 end
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 shiftlines(c.body);
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 return assert(loadstring(cs.assemble(c), newname))();
0e34461ab2a6 Add new debug extension
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end

mercurial