From 23de82cab05a0cce5129b32ae7f45a0fc64d9955 Mon Sep 17 00:00:00 2001 From: mpeterv Date: Sat, 25 Jan 2014 12:36:30 +0400 Subject: [PATCH] quote all printed names --- src/argparse.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/argparse.lua b/src/argparse.lua index 5f39293..2b4b675 100644 --- a/src/argparse.lua +++ b/src/argparse.lua @@ -329,6 +329,10 @@ function Parser:get_usage() return self._usage end +local function quote(s) + return "'" .. s .. "'" +end + function Parser:parse(args) args = args or arg self._name = self._name or args[0] @@ -352,7 +356,7 @@ function Parser:parse(args) if element._convert then local ok, err = element._convert(data) - return parser:assert(ok, "%s", err or "malformed argument " .. data) + return parser:assert(ok, "%s", err or "malformed argument " .. quote(data)) else return data end @@ -367,7 +371,7 @@ function Parser:parse(args) if element._overwrite then overwrite = true else - parser:error("option %s must be used at most %d times", element._name, element._maxcount) + parser:error("option %s must be used at most %d times", quote(element._name), element._maxcount) end else invocations[element] = invocations[element]+1 @@ -495,7 +499,7 @@ function Parser:parse(args) if not com then if #commands > 0 then - parser:error("unknown command %s", data) -- add lev-based guessing here + parser:error("unknown command %s", quote(data)) -- add lev-based guessing here else parser:error("too many arguments") end @@ -531,7 +535,7 @@ function Parser:parse(args) for i = 2, #data do name = first .. data:sub(i, i) - option = parser:assert(opt_context[name], "unknown option %s", name) + option = parser:assert(opt_context[name], "unknown option %s", quote(name)) handle_option(name) if i ~= #data and option._minargs > 0 then @@ -549,13 +553,13 @@ function Parser:parse(args) local equal = data:find "=" if equal then name = data:sub(1, equal-1) - option = parser:assert(opt_context[name], "unknown option %s", name) - parser:assert(option._maxargs > 0, "option %s doesn't take arguments", name) + option = parser:assert(opt_context[name], "unknown option %s", quote(name)) + parser:assert(option._maxargs > 0, "option %s doesn't take arguments", quote(name)) handle_option(data:sub(1, equal-1)) handle_argument(data:sub(equal+1)) else - parser:assert(opt_context[data], "unknown option %s", data) + parser:assert(opt_context[data], "unknown option %s", quote(data)) handle_option(data) end end @@ -587,7 +591,7 @@ function Parser:parse(args) for _, option in ipairs(options) do parser:assert(invocations[option] >= option._mincount, - "option %s must be used at least %d times", option._name, option._mincount + "option %s must be used at least %d times", quote(option._name), option._mincount ) end