Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local cli = {}
- local function getBoolean(bool)
- local _ = {["true"] = true,["1"] = true}
- if(type(bool) == "string") then
- if(_[string.lower(bool)]) then
- return true
- end
- elseif(type(bool) == "boolean") then
- return bool
- end
- return false
- end
- function cli.new(args)
- local self = {arguments=args, defaults={}, parsed={}}
- return setmetatable(self,{__index=cli})
- end
- function cli.setDefault(self,k,v)
- self.defaults[k] = v
- end
- function cli:getBoolean(k)
- if(self.parsed[k]) then
- return getBoolean(self.parsed[k])
- elseif(self.defaults[k]) then
- return getBoolean(self.defaults[k])
- else
- return false
- end
- end
- function cli:getString(k)
- if(self.parsed[k]) then
- return tostring(self.parsed[k])
- elseif(self.defaults[k]) then
- return tostring(self.defaults[k])
- else
- return ""
- end
- end
- function cli:getNumber(k)
- if(self.parsed[k]) then
- return tonumber(self.parsed[k])
- elseif(self.defaults[k]) then
- return tonumber(self.defaults[k])
- else
- return 0
- end
- end
- function cli:parse()
- local parsed = {}
- for k,v in pairs(self.arguments) do
- if(string.sub(v,1,1) == "-") then --it is a key
- if(self.arguments[k+1]) then --there is more
- if(string.sub(self.arguments[k+1],1,1) == "-") then
- parsed[v] = true
- else
- parsed[v] = self.arguments[k+1]
- end
- else
- parsed[v] = true
- end
- end
- end
- self.parsed = parsed
- return self
- end
- cli = setmetatable(cli,{__index=cli})
- return cli
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement