elua: match help categories in a case insensitive way, and add them to lualian
authorDaniel Kolesa <quaker66@gmail.com>
Wed, 30 Apr 2014 09:32:50 +0000 (10:32 +0100)
committerDaniel Kolesa <d.kolesa@samsung.com>
Tue, 10 Jun 2014 14:48:49 +0000 (15:48 +0100)
src/bin/elua/lualian.lua
src/bin/elua/modules/getopt.lua

index 8648726..afdb235 100644 (file)
@@ -18,15 +18,20 @@ getopt.parse {
     usage = "Usage: %prog [OPTIONS] file1.eo file2.eo ... fileN.eo",
     args  = arg,
     descs = {
-        { "h", "help", false, help = "Show this message.",
-            callback = function(d, parser)
-                getopt.help(parser, io.stdout)
+        { category = "General" },
+
+        { "h", "help", nil, help = "Show this message.", metavar = "CATEGORY",
+            callback = function(d, parser, v)
+                getopt.help(parser, v, io.stdout)
                 quit = true
             end
         },
         { "v", "verbose", false, help = "Be verbose.",
             callback = function() printv = print end
         },
+
+        { category = "Generator" },
+
         { "I", "include", true, help = "Include a directory.", metavar = "DIR",
             callback = function(d, p, v)
                 include_dirs[#include_dirs + 1] = v
index 654e4ae..c9dfa74 100644 (file)
@@ -169,8 +169,10 @@ local help = function(parser, f, category)
                 lln = math.max(lln, #ln)
                 lns[#lns + 1] = { ln, desc.help }
             elseif desc.category then
-                iscat = (not category) or (desc.alias    == category)
-                                       or (desc.category == category)
+                local lcat  = category   and   category:lower() or nil
+                local alias = desc.alias and desc.alias:lower() or nil
+                iscat = (not category) or (alias                 == lcat)
+                                       or (desc.category:lower() == lcat)
                 if iscat then
                     wascat = true
                     lns[#lns + 1] = { false, desc.category }