--- /dev/null
+local colormt = {}
+local ansicolors = {}
+
+function colormt:__tostring()
+ return self.value
+end
+
+function colormt:__concat(other)
+ return tostring(self) .. tostring(other)
+end
+
+function colormt:__call(s)
+ return self .. s .. _M.reset
+end
+
+colormt.__metatable = {}
+
+local function makecolor(value)
+ return setmetatable({ value = string.char(27) .. '[' .. tostring(value) .. 'm' }, colormt)
+end
+
+local colors = {
+ -- attributes
+ reset = 0,
+ clear = 0,
+ bright = 1,
+ dim = 2,
+ underscore = 4,
+ blink = 5,
+ reverse = 7,
+ hidden = 8,
+
+ -- foreground
+ black = 30,
+ red = 31,
+ green = 32,
+ yellow = 33,
+ blue = 34,
+ magenta = 35,
+ cyan = 36,
+ white = 37,
+
+ -- background
+ onblack = 40,
+ onred = 41,
+ ongreen = 42,
+ onyellow = 43,
+ onblue = 44,
+ onmagenta = 45,
+ oncyan = 46,
+ onwhite = 47,
+}
+
+for c, v in pairs(colors) do
+ ansicolors[c] = makecolor(v)
+end
}
--.USE "getopt"
+--.USE "ansicolors"
+
+
+local function maybe_print_color(key)
+ if opts['color'] then
+ return ansicolors.white .. key .. ansicolors.reset
+ else
+ return key
+ end
+end
local function print_help(key, value, tabs)
- print(string.format('%sOption: %s', tabs, key))
+ print(string.format('%sConfiguration element: %s', tabs, maybe_print_color(key)))
if not opts['short'] then
if value['data'] then
print(string.format('%s\tExample: %s', tabs, value['example']))
end
end
- print('')
for k, v in pairs(value) do
if not known_attrs[k] then
opts = getopt(args, '')
for k,v in pairs(res) do
- print_help(k, v, '');
+ print_help(k, v, '')
+ print('')
end
end