From 029dd296063c0810d40830567216c92b8cca0f79 Mon Sep 17 00:00:00 2001 From: Pavel Belikov Date: Tue, 14 Nov 2017 22:47:49 +0300 Subject: fix HelpParams::showValueNameOnce --- args.hxx | 13 +++++-------- test.cxx | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/args.hxx b/args.hxx index a381435..7af24c4 100644 --- a/args.hxx +++ b/args.hxx @@ -867,27 +867,24 @@ namespace args std::string flags; const auto flagStrings = matcher.GetFlagStrings(); const bool useValueNameOnce = flagStrings.size() == 1 ? false : params.useValueNameOnce; - for (const auto &flag : flagStrings) + for (auto it = flagStrings.begin(); it != flagStrings.end(); ++it) { - if (!flags.empty()) + auto &flag = *it; + if (it != flagStrings.begin()) { flags += ", "; } flags += flag.isShort ? params.shortPrefix : params.longPrefix; flags += flag.str(); - if (!postfix.empty() && !useValueNameOnce) + + if (!postfix.empty() && (!useValueNameOnce || it + 1 == flagStrings.end())) { flags += flag.isShort ? params.shortSeparator : params.longSeparator; flags += "[" + postfix + "]"; } } - if (!postfix.empty() && useValueNameOnce) - { - flags += " [" + postfix + "]"; - } - std::get<0>(description) = std::move(flags); std::get<1>(description) = help; std::get<2>(description) = indentLevel; diff --git a/test.cxx b/test.cxx index 991d98e..1189f97 100644 --- a/test.cxx +++ b/test.cxx @@ -993,7 +993,7 @@ TEST_CASE("HelpParams work as expected", "[args]") Options - -f, --foo [name] description + -f, --foo=[name] description -g[name] description d1 d2 -- cgit v1.2.1