From a200d713ef762a5fbaf575531c62400fd827a0fd Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Mon, 25 Apr 2022 22:21:47 -0700 Subject: [PATCH] extract a function --- mu.lua | 46 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/mu.lua b/mu.lua index 8091eca..7469920 100644 --- a/mu.lua +++ b/mu.lua @@ -22,6 +22,21 @@ local function readline() return result end +function eval_print(f) + local success, results = gather_results(xpcall(f, function(...) return debug.traceback() end)) + if success then + for i, result in ipairs(results) do + if i > 1 then + stdscr:addch('\t') + end + stdscr:addstr(tostring(result)) + end + else + stdscr:addstr(tostring(result[1])) + end + stdscr:addch('\n') +end + local new_expr = true local buf = '' while true do @@ -31,46 +46,23 @@ while true do stdscr:addstr('>> ') end buf = buf .. readline() - local f, err = load('return '..buf, 'REPL') + local f = load('return '..buf, 'REPL') if f then buf = '' new_expr = true - local success, results = gather_results(xpcall(f, function(...) return debug.traceback() end)) - if success then - for i, result in ipairs(results) do - if i > 1 then - stdscr:addch('\t') - end - stdscr:addstr(tostring(result)) - end - else - stdscr:addstr(tostring(result[1])) - end - stdscr:addch('\n') + eval_print(f) else local f, err = load(buf, 'REPL') if f then buf = '' new_expr = true - local success, results = gather_results(xpcall(f, function(...) return debug.traceback() end)) - if success then - for _, result in ipairs(results) do - if i > 1 then - stdscr:addch('\t') - end - stdscr:addstr(tostring(result)) - end - else - stdscr:addstr(tostring(result[1])) - end - stdscr:addch('\n') + eval_print(f) else - stdscr:addstr(err..'\n') if string.match(err, "''$") or string.match(err, "$") then buf = buf .. '\n' new_expr = false else - print(err) + stdscr:addstr(err..'\n') buf = '' new_expr = true end