mirror of
https://github.com/vxcontrol/soldr-modules.git
synced 2026-07-22 09:25:30 -04:00
36 lines
711 B
Lua
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 |