--[[Script to rewrite a stack traceback in terms of moonscript instead of lua]] for data in io.lines() do local spaces, filename, linenum, rest = data:gmatch("(%s*)(.*%.lua):(%d+):(.*)")() if filename and linenum and rest then local moonfilename = filename:gsub(".lua$",".moon") --If our file is not moonscript, we won't have a debug file local debugfile, err = io.open(filename .. ".X", "r") if not debugfile then --print("not debugfile" .. filename .. ":" .. err) 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("%s%s:%d: %s",spaces,moonfilename,moon,rest)) goto next end end debugfile:close() else print(data) end ::next:: end