diff options
author | Clement Farabet <clement.farabet@gmail.com> | 2011-08-13 20:31:00 +0400 |
---|---|---|
committer | Clement Farabet <clement.farabet@gmail.com> | 2011-08-13 20:31:00 +0400 |
commit | 80d8619d5c87fbb7428c7c6f7c272538ba87705a (patch) | |
tree | a181df7143cb1ea2346359f093744b9f9c363501 /OptionParser.lua | |
parent | 434a76641f612141c052b14c1e8b0c8e7c9f7256 (diff) |
Added function to generate nice summary strings (OptionParser)
Diffstat (limited to 'OptionParser.lua')
-rw-r--r-- | OptionParser.lua | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/OptionParser.lua b/OptionParser.lua index c88d4e3..543db44 100644 --- a/OptionParser.lua +++ b/OptionParser.lua @@ -36,7 +36,7 @@ function xlua.OptionParser(usage) self[k] = v end self:option{"-h", "--help", action="store_true", dest="help", - help="show this help message and exit"} + help="show this help message and exit"} return self end @@ -153,9 +153,39 @@ function OptionParser:help() end end -function OptionParser:summarize() - io.stdout:write('<'.. arg[0]:gsub('.lua','') .. "> configuration:\n") - for k,v in pairs(self.options) do - print(' + ' .. k .. ' = ' .. tostring(v)) +function OptionParser:tostring(generatefilename, params) + local str = '' + if not generatefilename then + str = '<'.. arg[0]:gsub('.lua','') .. "> configuration:\n" + for k,v in pairs(self.options) do + str = str .. ' + ' .. k .. ' = ' .. tostring(v) .. '\n' + end + else + local first = true + for i,entry in ipairs(self.option_descriptions) do + local key = entry[1] + local match = true + if #params > 0 then + match = false + for i,param in ipairs(params) do + if key == param then match = true; break end + end + end + local val = self.options[entry.dest] + if val and match then + if first then + str = str .. key .. '=' .. tostring(val) + else + str = str .. ',' .. key .. '=' .. tostring(val) + end + first = false + end + end + str = str:gsub('/','_'):gsub(' ','_') end + return str +end + +function OptionParser:summarize(compact) + io.write(self:tostring(compact)) end |