aboutsummaryrefslogtreecommitdiff
path: root/rewrite.lua
blob: f132993fe80360e23dbbeba64feb24e671968424 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--[[Script to rewrite a stack traceback in terms of moonscript instead of lua]]

for data in io.lines() do
	local filename, linenum, rest = data:gmatch("(.*%.lua):(%d+):(.*)")()
	if filename and linenum and rest then
		local _,_,stripped_filename = filename:find("(%S+)")
		local moonfilename = filename:gsub(".lua$",".moon")

		--If our file is not moonscript, we won't have a debug file
		local debugfile = io.open("debug/" .. stripped_filename.. ".X")
		if not debugfile then
			print("not debugfile")
			print(data)
			goto next
		end

		--Skip first line
		debugfile:read("*l")
		for line in debugfile:lines() do
			_,_,pos,lua,moon = line:find("(%d+)%s+(%d+):%b[] >> (%d+)")
			if tonumber(linenum) == tonumber(lua) then
				print(string.format("\t%s:%d: %s",moonfilename,moon,rest))
				goto next
			end
		end
	else
		print(data)
	end
	::next::
end