Console: Add console logging documentation
[senf.git] / Console / OverloadedCommand.cc
index 47a08dc..ecc5c44 100644 (file)
@@ -80,7 +80,9 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
         Overloads::const_iterator const i_end (overloads_.end());
         unsigned index (1);
         for (; i != i_end; ++i, ++index) {
-            os << "    " << index << "- " << name();
+            os << "    ";
+            if (overloads_.size() > 1) os << index << "- ";
+            os << name();
             for (unsigned j (0); j < (*i)->numArguments(); ++j) {
                 ArgumentDoc arg;
                 (*i)->argumentDoc(j, arg);
@@ -94,7 +96,7 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
                 if (! arg.defaultValue.empty())
                     os << ']';
 
-                if (! arg.name.empty()) {
+                if (! arg.name.empty() || ! arg.defaultValue.empty()) {
                     ArgumentDocs::iterator k (argumentDocs.begin());
                     ArgumentDocs::iterator const k_end (argumentDocs.end());
                     for (; k != k_end; ++k)
@@ -121,7 +123,7 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
         ArgumentDocs::const_iterator i (argumentDocs.begin());
         ArgumentDocs::const_iterator const i_end (argumentDocs.end());
         for (; i != i_end; ++i) {
-            if (! i->doc.empty()) {
+            if (! i->doc.empty() || ! i->defaultValue.empty()) {
                 os << "    " 
                    << i->name 
                    << std::string(i->name.length()<8 ? 8-i->name.length() : 0, ' ')
@@ -143,9 +145,12 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
         unsigned index (1);
         for (; i != i_end; ++i, ++index) {
             std::string overloadDoc ((*i)->doc());
-            if (! overloadDoc.empty())
-                os << "\n" << "Variant " << index << ":\n"
-                   << overloadDoc << "\n";
+            if (! overloadDoc.empty()) {
+                os << "\n";
+                if (overloads_.size() > 1)
+                    os << "Variant " << index << ":\n";
+                os << overloadDoc << "\n";
+            }
         }
     }
 }