Files
soldr-modules/tests_framework/lua/cliargs/utils/disect_argument.lua
T
2022-11-22 02:21:28 +03:00

36 lines
711 B
Lua

local function disect_argument(str)
local _, symbol, key, value
local negated = false
_, _, symbol, key = str:find("^([%-]*)(.*)")
if key then
local actual_key
-- split value and key
_, _, actual_key, value = key:find("([^%=]+)[%=]?(.*)")
if value then
key = actual_key
end
if key:sub(1,3) == "no-" then
key = key:sub(4,-1)
negated = true
end
end
-- no leading symbol means the sole fragment is the value.
if #symbol == 0 then
value = str
key = nil
end
return
#symbol > 0 and symbol or nil,
key and #key > 0 and key or nil,
value and #value > 0 and value or nil,
negated and true or false
end
return disect_argument