--[[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