diff options
author | Undecidable Robot <undecidabot@gmail.com> | 2016-05-16 19:01:24 +0800 |
---|---|---|
committer | Undecidable Robot <undecidabot@gmail.com> | 2016-05-16 19:01:24 +0800 |
commit | f3dcbf4b2ea2848a5fc0748141e53da984863e05 (patch) | |
tree | d98535b6dd29950c11fe46442ab96db6bcdc6427 | |
parent | 726d4220db38e8990dd6a87d31f509c2533ca5c8 (diff) | |
download | lpeglabel-f3dcbf4b2ea2848a5fc0748141e53da984863e05.tar.gz lpeglabel-f3dcbf4b2ea2848a5fc0748141e53da984863e05.tar.bz2 lpeglabel-f3dcbf4b2ea2848a5fc0748141e53da984863e05.zip |
Adding line preview to error messages
-rw-r--r-- | relabel.lua | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/relabel.lua b/relabel.lua index 77718b6..f6bf080 100644 --- a/relabel.lua +++ b/relabel.lua | |||
@@ -4,6 +4,7 @@ | |||
4 | local tonumber, type, print, error, ipairs = tonumber, type, print, error, ipairs | 4 | local tonumber, type, print, error, ipairs = tonumber, type, print, error, ipairs |
5 | local setmetatable = setmetatable | 5 | local setmetatable = setmetatable |
6 | local unpack, tinsert, concat = table.unpack or unpack, table.insert, table.concat | 6 | local unpack, tinsert, concat = table.unpack or unpack, table.insert, table.concat |
7 | local rep = string.rep | ||
7 | local m = require"lpeglabel" | 8 | local m = require"lpeglabel" |
8 | 9 | ||
9 | -- 'm' will be used to parse expressions, and 'mm' will be used to | 10 | -- 'm' will be used to parse expressions, and 'mm' will be used to |
@@ -285,6 +286,8 @@ local function compile (p, defs) | |||
285 | errors = {} | 286 | errors = {} |
286 | local cp, label, suffix = pattern:match(p, 1, defs) | 287 | local cp, label, suffix = pattern:match(p, 1, defs) |
287 | if #errors > 0 then | 288 | if #errors > 0 then |
289 | local lines = {} | ||
290 | for line in p:gmatch("[^\r\n]+") do tinsert(lines, line) end | ||
288 | local errmsgs = {} | 291 | local errmsgs = {} |
289 | for i, err in ipairs(errors) do | 292 | for i, err in ipairs(errors) do |
290 | if #err == 1 then | 293 | if #err == 1 then |
@@ -292,6 +295,8 @@ local function compile (p, defs) | |||
292 | else | 295 | else |
293 | local line, col = lineno(p, err[2]) | 296 | local line, col = lineno(p, err[2]) |
294 | tinsert(errmsgs, "Line" .. line .. ", Col " .. col .. ": " .. errorMessages[err[1]]) | 297 | tinsert(errmsgs, "Line" .. line .. ", Col " .. col .. ": " .. errorMessages[err[1]]) |
298 | tinsert(errmsgs, lines[line]) | ||
299 | tinsert(errmsgs, rep(" ", col-1) .. "^") | ||
295 | end | 300 | end |
296 | end | 301 | end |
297 | error(concat(errmsgs, "\n")) | 302 | error(concat(errmsgs, "\n")) |