#!/usr/local/bin/lua51 local log = require("log") local oargs = { } -- This function assigns flags to their values while setting -- remaining arguments to none oargs.compile = function(array, rules) local ret = { } ret.none = { } for i = 1, #rules do ret[rules[i]] = nil end local i = 1 while i < #array + 1 do for j = 1, #rules do if rules[j] == array[i] then local value = array[i + 1] if value == nil then log.error("missing argument for flag " .. rules[j]) end ret[rules[j]] = value table.remove(array, i + 1) table.remove(array, i) i = i - 1 end end i = i + 1 end for i = 1, #array do table.insert(ret.none, array[i]) end return ret end return oargs