Module:Args
Want an adless experience? Log in or Create an account.
Documentation for this module may be created at Module:Args/doc
local Arg = {} Arg.__index = Arg function Arg.new( value ) return setmetatable( { __value = value }, Arg ) end function Arg:val() return self.__value end local p = {} function insertInto( tbl, key, value ) local first, rest = string.match( key, '^(.-)_(.*)$' ) local myKey = first or key myKey = tonumber( myKey ) or myKey -- make sure the node exists if not tbl[myKey] then tbl[myKey] = Arg.new() end if first then -- this is an internal node so insert children insertInto( tbl[myKey], rest, value ) else -- this is a leaf so set value tbl[myKey].__value = tonumber( value ) or value end end function p.parse( args ) local parsedArgs = {} for k, v in pairs( args ) do insertInto( parsedArgs, k, v ) end return parsedArgs end return p